Refactor Git-Review.

I've squashed over 70+ commits made over the past month into a single one, so that hopefully the pull request doesn't look to daunting or messy.

Perhaps we can merge it to a new branch first, and later back to master when everything's confirmed working fine. (Just to play safe...)