Promisification of the persistence layer

This pull request adds promise support to the persistence methods. The `putil.nodeify` helper provides backward-compatibility with the callback API—if a callback function is not given, it returns a promise; otherwise, it attaches the callback as the final fulfillment handler (terminating the chain with `.done()`) and returns `undefined`.

Tested against the Redis, LevelUP, CouchDB, and Cassandra adapters.