(#39) - catch exceptions, abstractify

So this is a big commit, but it represents
the direction I would like localstorage-down
to go in: more modular, more easily
separable into an abstract-keyvalue-down
component and a core localstorage component.

Notice that everything that touches localStorage
itself has been moved into localstorage-core. Also,
all access has been made sequential and asynchronous,
so in principle localstorage-core could be subbed
out for any key-value storage system.  (My sights
are currently set on lawnchair and Amazon S3.)

As for this commit itself, if you want to test in
PouchDB, you'll have to wait on pouchdb/pouchdb#2252.
But I tested it, and it passes at 100%.