refactor to support scm events
fire events when git branches change; update the file view labels on those events
Add util function to get sha for a fileEntry.
Add file status types.
Add implmentation of git index.

It maintains the index of file status in the git repo.
Add git status.
Don't write unchanged files on commit.
nits.
Add write index support.
cleaned up scm events; some scm operations now tell the workspace about their changes
Addressed comments.
nit.
merge to master
change method to private
fix new file/folder to work on selection
Merge branch 'master' into work
Merge pull request #785 from dart-lang/devoncarew_fire_git_events

Devoncarew fire git events
fix spacing nit
address comments
Merge pull request #792 from dart-lang/keertip_newfile

New file and new folder from selection