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 was trying to keep all of the localStorage properties around (even if the interface for most of the functions was changed).  Originally I just kept a list of keys and used the get length prop (like in the current implementation of SyncWrapper), but I can just change the interface to include a getKeys() method (or similar).  Do you have a preference?