make it easy to selectively copy properties to support a 'minimum json' representation of a DBObject

enum now has a hasOwnProperty to look like the Object.

Fixed regression when defining toJSONValue and fromJSONValue for subclass: we need to always define it.

Removed old comments to fixed problem
_.deepfreeze function so that we can really make objects immutable
Note about a fix needed in the future to handle less specified enums