Decouple Registry from Container

`Registry` is used for stateless factory / option registrations.

`Container` uses a `Registry` to lookup factories and options, and then
instantiates and caches objects.

This decoupling allows for multiple containers to reference a common
registry, which is key to allowing a single Ember app to support multiple
sessions.

`Container` is made backwards compatible by exposing many of its associated
registry's methods.

The concept of subcontainers (i.e. parent / children containers) was
removed as part of this refactoring. It was a legacy feature that's no
longer used within Ember core and has never been publicly documented,
so it's safe to remove without deprecation.
Convert Application to use both Registry & Container
Fix tests related to Registry / Container refactoring