Update DataMaps and ObjectMaps to be dict aware.  Allow ApplyDataMap to accept a dict.

allow applyDataMaps to be set via a router or facade call.

Additionally allow DataMaps and ObjectMaps to be converted to and from a dict.
You want map["badkey"] to return None? You should probably do the usual:

{code}
try:
    return getattr(self, key)
except AttributeError:
    raise KeyError(key)
{code}