Prevent template parameters with the same name
Ignore unused parameters

Also added the common global of CustomEvent
Add Target class to participate in events

ActiveTarget indicates the logical target the user is focused on much
as the document.activeElement indicates the element the user is
focused on.

activeElement may differ from activeTarget as the activeElement may
have no associated component.

All components are Targets.

This hopefully clarifies some of the half-baked attempts at articulating
this need as evidenced by the component's "acceptsDirectFocus",
and the "parentProperty" to facilitate pointing to the next target
candidate, in addition to a few one-off implementations manually
doing the work of finding the activeComponent.

Specifically, anywhere where we dispatched an event on a component the
user was focused on instead of where the event happened will now be
easier.

The eventManager also provides two new APIs that leverage this new
information, `dispatchFocusedEvent` and `dispatchFocusedEventNamed`
that match their less focused brethren in purpose while using the
activeTarget as the proximal target of the event.

Targets also provide a `nextTarget` property which is used exactly as
the `parentProperty` was to direct distribution of events through a tree
of target candidates.

The implementation thus far reuses the activationEvents concept which
the EventManager already manages. An alternative implementation
could derive the activeTarget from the activeElement and even
drive the prepareForActivationEvent system through focus alone.

That remains a possibility whereas this implementation minimizes
churn by using as much of the existing machinery as possible.
Move eventDispatching off Object.prototype

I didn't even know they were there, now they're on Target. Anybody that
ever plans on being able to be the proximal target or a target during
event distribution will need to be a Target now.

I've found a few places in my limited testing where this was necessary
to introduce in a few object's prototype chain.

The specs are a daunting work in progress.
Correct a few objects trying to dispatchEvents

Object.prototype no longer provides this functionality, it's moved
into Target.
Rename as testMontage as testTarget for clarity

The intent being that the Target object used as the prototype has come
from the test environment, not the test suite environment.

This used to actually be a Montage object, not a Target.
Add specs for activeTarget concept

Always a worthwhile endeavor as I figured out I wasn't actually using
nextTarget to find the next target if the original didn't acceptFocus.

Anyway, now we have tests built on top of the hands-on playground so
there should be enough to get a feel for how this system works.