Bugfix #1: Don't make components resolvable under silly and useless names.
Bugfix #2: make dynamically wire()'ed scopes resolvable.
Expose more functionality through the APIs to allow more powerful plugins.
In createArray(), if name is undefined, don't append "[]" to it to make "undefined[]". It doesn't make sense.
In the implementations of propertiesFacet and invokerFacet, the automatically wire()'ed
properties and args are given arbitrary names to make them resolvable. This is unexpected,
clutters the resolvable namespace, and IMO quite harmful to readability. If you need to
reference a component, you should make it a top-level component and reference it in
properties and function arguments, and it would be much more clear and readable.

This, and the fact that we need this change to implement the containerFactory, prompted
us to remove the names given in these two facets.
Modified pluginApi implementation to support the _origin system we will implement next.
Added documentation for the _origin system.
Added _origin system implementation for components (by simply passing `_origin` around).
Added _origin system implementation for scopes, by adding an array in parent scope to
track its (direct) child scopes. This array is also used to destroy these child scopes
before the parent scope is destroyed, and the old mechanism of attaching callbacks to
the parent scope's scopeDestroyed promise is removed.
Adds proxy._name and stops calling safeMixin() on scopes (so they are treated the same as contexts),
in preperation of the implementation of destroyChildren().
Added destroyChildren().
Removed destroyChildren()'s support for  namespaced names, the namespace functionality is purely
implemented by the client.
Expose _destroyChildren().