WIP: Use native Rugged primitives for doing rebase
Our current method of rebase is complex and doesn't always work. When you do a sparse checkout of a diff, there's a possibility that the working directory is empty if files were deleted.
Edited by Stan Hu