Overwrite by key

This seems like a generally useful merge strategy. Allows you to handle lists slightly more carefully. Only does default merge on list objects i.e. currently does not go and retrieve subschema.