Git status

I've reworked porcelain status, improved the docs, and paired down a bit of the functionality until we have a git ignore module in place.  Currently, the porcelain.status method tracks and returns staged (index -> HEAD) and unstaged changes (working tree -> index).  This is in line with your suggestion earlier.  Test coverage has also been extended to at least do barebones testing of the feature.  

In order to observe untracked changes gitignore parsing will be necessary.  This can be hooked in once gitignore  functionality is implemented.  I'm beginning work on this in a separate module.

Let me know what you think! :)