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 should avoid recursive functions.  Async npm module is a little too big.  But there are some micro libraries like [each-async](https://www.npmjs.org/package/each-async) that you can explore, to purge smaller sets of items in parallel, and pause purging once enough space is purged.

Also if the memcache library you use supports multi delete, it will be useful for purging.