Reuses caches on SDM relaunch, makes first compile ~4x faster.

Previously MinimalRebuildCache instances were not persisted or loaded
from disk at all and a new PersistentUnitCache was built from scratch
for each SDM launch.

Now SDM takes care to choose a location for its PersistentUnitCache in
a way that will be consistent when SDM is relaunched in the same project
and targetting the same module.

Going further MinimalRebuildCache instances are now read from disk at
the beginning and persisted to disk after every compile. Similarly these
cache instances are saved to a folder whose name is consistent for the
same project and module and are saved to a file named consistently using
a combination of project, module and compiler version.

Because these caches are tied to the compiler version and because the
managed objects are tied to .java class modification dates, they should
always be correct. But in the event that something does become corrupt
there is now a SDM button to clear disk caches.

Change-Id: Ib995c18fe6842dc8914457ceff43e17808bfa550
Review-Link: https://gwt-review.googlesource.com/#/c/9450/