Schematic improvement to add ability to merge documents

Added the ability to merge one document onto another, where nested documents are merged properly. (This differs from `putAll(Document)`, which just operates on the top-level fields.)