Updated the ThreadSafeStaticBRJSAccessor so that it no longer switches
to a Java7FileModificationService (allowing the performance benefits to
be gained), and updated the RestApiServlet so that it no longer switches
to a PessimisticFileModificationService to prevent caching bugs, which
was for some reason was completely killing performance once I'd made the
first change.

Both of the above changes will provide better performance, but I've also
had to make some changes to avoid the potential caching bugs you can get
from updating the model via the API then expecting queries to
immediately reflect those changes:

  1. FileInfo.resetLastModified() now invaliadates all parent FileInfo
objects too.
  2. Updated the FileModificationServiceNodeReadyObserver to invoke
resetLastModified() on nodes that have been added.
  3. Updated the RestApiService to manually invoke `resetLastModified()`
after updating any existing nodes.
  4. Properly implemented some of the NonExistentFileInfo methods to
avoid the situation where resetLastModifed for a known file is thrown
away because the watcher hasn't yet become aware of the file the first
time around.
  5. Updated OptimisticFileModificationService to provide different
FileInfo objects for each file now that the resetLastModified() methods
actually work.