Asyncronous interface

@lingyan 

First pass at making storage-lru use an async storage interface.  For backwards compatibility/sync interfaces, users can use the SyncWrapper (should I make this automatic?).
I see.  Building the hash is very fast. Check out [this jsperf test](http://jsperf.com/how-fast-to-build-a-hash). (jsperf is not perfect benchmarking tool, but it can still give a sense of how fast/slow things are.)

And rebuilding it is less error-prone and code is more readable.  Otherwise, you will need to update the hash every time the records array is updated.  WDYT?