Merge pull request #1655 from j/merge

utils; fix utils.merge
added support for discriminator mapping (closes #1003)
throw an error when a discriminator is added with the same name
added ifError assertions to test
added regression test to show that Model.findOneAndUpdate() appends discriminator type conditions to queries.
CS
set discriminatorKey schema option to '__t' by default
regression tests for population/reference mapping
merge base schema into discriminator schema
have discriminator types inherit from base model's prototype