Git status

Added a WIP implementation for `git status` - it currently generates and outputs staged and unstaged changes and writes to a stream.  

Untracked changes is a little trickier.  Properly parsing gitignore rules is a little involved [1] so I've left that piece so far unimplemented since I believe that may be a useful piece of general functionality for the project as a whole.  Also, I wanted to see if you've already implemented some of that elsewhere first.

In any case take a look at my approach and I'll add the missing pieces as we figure out the best approach. 

[1] http://git-scm.com/docs/gitignore