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?).
We can ask the user to always provide a `scanSize`?  And for localStorage, they can use formulas values like `Math.min(1000, localStorage.length)` and pass that as `scanSize` option when initializing the StorageLRU instance.