define non enumerable

introduce __defineNonEnumerable hook, this allows parts of ember to opt-out of the enumerable safety. Unfortunately at this time there is not way to create fast non-enumerable properties. Historically ember has this to allow people to merge, extend and JSON.stringify. Unfortunately some things like Ember.Views should do not need this but still suffer from the pretty hefty overhead.

This PR Reduces the cost of view allocation by 300% -> 400%.

Micro bench (creating 10,000 views):


before: 120ms
after:   35ms

- [ ] more refactorings
- [ ] add support for symbols if they are available
Is this comment needed?  I thought perhaps it was from a refactor/test and might be able to be removed now....