Collection persistence improvements

Some notes:

 * #341 documented a problem with set strategy creating BSON objects
 * #404 attempted to fix set strategy for EmbedMany collections, but there was a shortcoming with handling numeric/string keys in the same collection
 * #503 and its PR, #504, highlighted a data loss issue introduced in #404 and implemented a fix similar to the one I'm exploring in this PR (setting the entire collection at once).
 * #499 was an independent bug report where the user was storing a ReferenceMany collection with string keys and noticing that MongoId instances were being set as objects instead of BSON ObjectIds. This was due to behavior originally introduced in #302 (the same code that #404 later touched).