Address concerns with injected properties feature

This addresses issues raised in the comments of #5162.

- [ ] [remove unnecessary `hasOwnProperty` check](https://github.com/emberjs/ember.js/pull/5162#discussion_r20398478)
- [ ] [make `lazyInjections` private](https://github.com/emberjs/ember.js/pull/5162#discussion_r20398493)
- [x] [remove unnecessary closure in `InjectedProperty` func](https://github.com/emberjs/ember.js/pull/5162#discussion_r20398539)
- [x] [name anonymous functions for better debugging](https://github.com/emberjs/ember.js/pull/5162#discussion_r20398547)
- [x] [remove injection type validation from production builds entirely](https://github.com/emberjs/ember.js/pull/5162#discussion_r20398647)
- [x] [added `onLookup` factory hook](https://github.com/emberjs/ember.js/pull/5162#issuecomment-63155654)
- [x] [cache lazy lookup validation](https://github.com/emberjs/ember.js/pull/5162#issuecomment-64290852)

I haven't addressed the top two concerns yet because I'm still uncertain of how the container should be treated within Ember. I'm also not 100% sure about the `onLookup` API, e.g. whether it should be a hook or a callback mechanism.
@rwjblue does this look right to you to avoid defeatureify nesting problems? There's a `Ember.assert` inside a `Ember.runInDebug` inside a `Ember.FEATURES.isEnabled`...