A state storage wrapper for legacy ZK client

This patch introduces a StateStorage trait, intended to
provide access to agent state information, such as
replicated map, host and port alive information, etc.
This is inteded as a transitional interface, until
we design a final state storage interface, perhaps based
on Curator.

The current implementation, ZookeeperStateStorage uses
the legacy DataClient as underlying storage API. It also
consolidates access to the dictionary Reactor, and the
ZkConnectionAwareWatcher, such that to allow the creation
of the new device mappers from the virtual topology at
runtime without dependency injection.

Change-Id: I9fabef84a38aff94bc82b13de686717627f63968
Signed-off-by: Alex Bikfalvi <alex.bikfalvi@midokura.com>
Merge "A state storage wrapper for legacy ZK client"