[FEATURE ember-metal-injected-properties] Added `InjectedProperty` descriptor

This adds a new `Descriptor` type for defining a property that does a
lazy lookup on an object's container. There is no public API addition
since this kind of property is easily abused. Instead it will be used by
internally `ember-runtime` API additions, where validation can happen.
Added `inject` namespace and injected property creation/validation

This adds a new property to the root namespace that provides computed
properties for container lookup that are enforced by type. This is to
disambiguate between other top level properties that are very similar.
Any ember module can create a new per-type injection helper by calling
`createInjectionHelper` and providing a mixin-time validation function.

The container has been modified to support validating lazy lookups
before instantiation through the factory's `lazyInjections` method which
returns an array of full container names that must be valid.
Added the `inject.controller` injected property helper

The helper restricts controller injections only to other controllers, so
it cannot be used on routes, views, etc.
Added `Ember.Service` and the `inject.service` injected property helper

This adds the base class for Ember 'services' and an injection helper
that makes referencing container-singleton services from routes,
controllers, views, etc. simple.
Merge pull request #5162 from slindberg/injected-properties

[FEATURE ember-metal-injected-properties] Injected properties
Import keys, and bring back Ember.keys tests lost in shuffle.

These tests were deleted in https://github.com/emberjs/ember.js/pull/5411.
Merge pull request #5417 from rwjblue/bring-back-deleted-keys-tests

Import keys, and bring back Ember.keys tests lost in shuffle.
small tweak

1. name anonymous function so its easy to grok with tooling
2. perf manual super call without needing a rebind
Merge pull request #5514 from stefanpenner/renderer-tweak

small tweak