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.
this has to use the setattr methods so that __setitem__ is called and the _attrs are updated appropriately.  This is done to mimic the original behavior of the ObjectMap class.  Thats why its written the way it is.  I tried changing it as you suggested and it broke all over the place.