Protecting game state is now viable! Async local storage!

Some really cool stuff going on in this update.

localStorage was ditched in favor of an awesome library by Andrea
Giammarchi called asyncStorage. It transparently handles writing and
reading to a number of different APIs asynchronously. Since WebSQL (and
IndexedDB) has an asynchronous API, we can use these, which allows us
to stop blocking the emulator with localStorage writes.

io.js had to be retooled to work with this asynchronous model.
Currently some really ugly stuff going on in there, but I tried to
touch core.js as little as possible. The only modifications made to it
were creating a separate function for getting the ROM’s name, and
removing fromTypedArray and placing it in the deflation web worker.
This turned out to be one of the main causes of slowdown when writing
the game state.

Everything now runs just as smoothly as it did before the game state
protection was implemented. In some cases, it’s faster, thanks to the
asynchronous writing of the SRAM.