Added map-merge-deep function

map-merge-deep combines two maps into a single map. The merge is recursive, meaning maps can contain other maps to an arbitrary depth. By default it will override existing key/values but this can be configured with a parameter.