* Dht: automatic listen multiplexing, resulting in reduction of network usage when performing multiple listen operations on the same key. * Dht, DhtRunner: new listen() API method with callback argument allowing to be informed of value expiration. The callback has the following signature: bool(const std::vector<std::shared_ptr<dht::Value>& values, bool expired>) * Dht: added value cache used by above features * network: added value expiration and refresh signals for listen operations * tests: added automated unit tests using CppUnit