Refactoring the loading system and adding a dialog.
This is a large cleanup of the loading code to be much easier to maintain
and fixes a lot of bugs. It now supports progress events, deduplicates a
lot of the nasty logic, and is setup to handle new types better.

Primarily fixes #271, works on #266 (filenames are now carried, though not
used on save).

A lot of things were fixed, namely:
* Doesn't show the splash screen on a snapshot from a tab.
* Fixes error messages for several trace load failure types.
* Fixes a startup issue with traces not snapping to the right viewport.
* Moves the saving code into DocumentView, where it belongs.
* Sets the app tab title to the filename on snapshots.
* Fixes # some dialog issues (like remaining up on the screen).
* Revokes blob: URLs after loading, fixing a leak in the Browser.
* Closes Files after loading, freeing their memory much faster.
* Better tracks mime types (for the future, when DataStore is better).
Merge pull request #275 from google/loadingdialog

Refactoring the loading system and adding a dialog.