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?).
If we don't have a size or length property how are we going to tell when we need to do a purge after setItem fails?  Memcache will handle itself but I'm thinking for more simplistic solutions like localStorage?