Now we can stage lines by range and we can also stage reversals
meaning we can delete lines or move lines from the working tree
to the index and vice versa.
I looked at how a few different git guis achieved this to iron out
some edge cases, notably ungit and git cola. The end result is
disstinct from both those repos, but I know people care about
licensing and stuff so I'm happy to revisit this if somebody
considers it derivative.