rebase: return early when source is descendant of destination
This only happens when using --base (or no source selection options), as
rebase already aborts in this situation when using --source.
Without this change you get an abort from the underlying merge, and the
repository is in a different state than you started with (the working
dir parent is changed).
patch: do not swallow header-like patch first line (
issue1859)
Current solution is hackish but looks like a good trade-off short of rewriting
patch.extract() significantly.
windows: fix unlink() not dropping empty tree (
issue1861)