Devoncarew refresh

Implement Project.refresh() (fixes #880).

- implement project.refresh() in the workspace. add the ability to batch up resource change events, so a refresh will fire one change event (with many deltas) per refresh.
- make the editors refresh their content when a resource change event happens. ensure that the editor's don't respond to the change events they create when saving
- added 3 tests for project.refresh
- add a keybinding to refresh projects (F5)

git checkout already calls refresh(), so this CL updates the UI appropriately when a checkout happens. @keertip @dinhviethoa