Reintroduce caching for directory contents: we can be less conservative than
file contents because it's less scary to have dir listings be out of date
(this follows how Brackets master already operates).

Appshell FS now dispatches synthetic change events whenever it modifies /
creates / destroys items itself - this ensures the dir caches are as up to
date as possible without real watchers (instead of only clearing caches on
window focus). This also matches Brackets master, where caches like
FileIndexManager would be cleared on every "projectFilesChange" event.

Also, fixes a bug where Directory._stat wasn't cleared when watchers said
the dir changed.
Merge remote-tracking branch 'origin/glenn/file-system' into glenn/file-system

* origin/glenn/file-system:
  Remove dependency on FileIndexManager