Partial fix for over-proxy on options.prototype in registerElement().

Symptom: "Failed to execute 'dispatchEvent' on 'EventTarget':
  The event provided is null".

Analysis: event is a proxy, which dispatchEvent can't handle.
The obj in obj.dispatchEvent should be a proxy so we call Proxy.get then
Proxy.apply. But obj is not a proxy because the executing function, fire(),
was on an options.prototype to a registerElement() call,
and these functions were being deproxied.

Additional work: In addition to the deproxy, the handling of upgraded
CustomElements is incomplete. The functions added on options.prototype
are all expandos and they need to be registered against the
proxy for the upgraded element -- which we don't know until we see
'this' in the createdCallback.
WIP getOwnPropertryName and _fake_proto_.
If __proto__ is accessed by JS code, then it is like a property
get but the get processing based on getOwnPropertyName fails. So
add special case code for access to '__proto__'
Add Reset button to UnitTest page for dev ease
Option to add function tracing (partial fix)