Devoncarew git status

Add a git status indicator in the files view. Synchronize it with the current git status as changes occur. Fixes #694.

- add the ability to store arbitrary metadata off of workspace resources
- add a `isScmPrivate()` method to resources, and change our visitor to not traverse them by default (fixes #875)
- store the git status as a field on the resource metadata
- when resource changes occur, or git commits happen, update the scm status asynchronously
- once the scm metadata on resources have updated, fire an scm change event. the files view listens for that and re-syncs its scm label

![screen shot 2014-02-05 at 4 02 44 pm](https://f.cloud.github.com/assets/1269969/2094030/e59018da-8ec3-11e3-9eb9-4c86c97aa311.png)

@gaurave @dinhviethoa