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
Up to date upstream