Persistance Support

* [x] support for retained messages #21;
* [x] support for uncleaned clients #24 on QoS 1 #17;
* [x] subscriptions and packets for uncleaned clients should have a TTL;
* [x] support for Redis as external database;
* [x] support for MongoDB as external database;
* [x] CLI options for the basic storage (the default should use MemDOWN);
* [x] Support for in-flight messages persistance #38;
* [x] Add logging for the persistance wiring;
* [x] Update README and add persistance APIs.

Closes #17.
Closes #21.
Closes #24.
Closes #38.