implement diff strategy for maps

* maps must be diffable in a consistent way (ordering of keys)
* map keys must be serializable through custom serializers