Extend simplification + EMCAScript5 compatibility

This PR contains these changes to THREE.extend:

* EMCAScrip5 compatibility in response to this comment from @gero3: https://github.com/mrdoob/three.js/pull/2947#issuecomment-12501828

* Only new properties defined are copied across via checking hasOwnProperty().

* This is no longer hierarchical/recursive as that paradigm is very rarely used anywhere, and it isn't used at all in Three.js.

Examples and unit tests still work.