Fix memory leak with nested objects #1565
Make copied properties non-enumerable to match previous behavior

Since all properties used to be added to the prototype instead of locally, Object.keys wouldn't catch them.  Now they are added as local properties of the object, so Object.keys picks them up.  Making these properties non-enumerable fixes this, to ensure backward compatibility for people who depended on this behavior.
Now working on 3.8.15
Merge pull request #2211 from devongovett/memory-leak

Fix memory leak with nested objects #1565
Tests and POC for #2176
Fix #2176: get rid of buggy and unnecessary caching of _id for populated. Also related to #1794
Merge branch '3.8.x' of github.com:LearnBoost/mongoose into 3.8.x
Clean up style messiness in model.stream.test.js
Test case for #1862
Fix #1862
Fix typo in test file name
Test case for #1932
Apply #2241 to 3.8.x
Fix #1932: cast $or and $and in $pull, etc.
Merge branch '3.8.x' of github.com:LearnBoost/mongoose into 3.8.x
Fix silly bug with versionKey