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 like that.  It is an interesting point.  We could do something smart like progressively rebuilding Meta with next batch of subset of items, if we don't find enough space during the purge.  Progressiveness (for example, how many more batches do we continue scan) can be configured.