BUG-648: Create MapAdaptor and friends

This introduces the MapAdaptor class, which allows transforming one Map
implementation to another, balancing the isolation and access patterns.

The core of the idea is that we are using patterns which would benefit
from persistent structures where we can take a point-in-time stable
snapshot, update it and publish the new version all the while clients
accessing the old version suspect nothing. So far we have implemented
the isolation by copying maps around -- which is fine as long as there
are not too many elements.

We do have a persistent strucutre (Ctrie), which allows snapshot and
isolation to happen in O(1), but exacts heavy price on access due to
volatile variables.

Change-Id: I4b745eecc5a915862ab75921703cfce3c2747ab6
Signed-off-by: Robert Varga <rovarga@cisco.com>