feat(scope): add new createProtoChild method

Internalizes PrototypeMap, and allows for easier switch to ContextLocals.
feat(compiler): support ScopeAware for decorators

Even though decorators can safely inject scope (even after the proposed
context change), they might pick up ScopeAware from a base class shared
with components. Instead of manually calling super.scope = scope, we
support ScopeAware for decorators (similarly to Attach/DetachAware.)

There is no performance reduction on the tree benchmark.
refactor(NgElement): NgElement inject RootScope instead of Scope.

NgElement only uses scope to access rootScope, so now we directly inject
RootScope.

This is needed for future change #1429 which disallows Scope injection
into controllers. Since NgElement depends on scope it would also be
disallowed, unless we change it to directly use RootScope.