Bug 1097694 - js::HasOwnProperty sanity surgery. r=efaust.

*   Rename the clownshoes js::HasOwnProperty signature to js::NonProxyLookupOwnProperty,
    which is what it really is.

*   Change the sane js::HasOwnProperty signature to use the hasOwn handler when the
    argument is a proxy, as that's what it's there for.

*   Change the DirectProxyHandler::hasOwn implementation to use js::HasOwnProperty, so
    that when target is also a proxy, we end up calling its hasOwn handler.  Similar
    changes in ScriptedDirectProxyHandler.cpp.

--HG--
extra : rebase_source : de218abcc9faab7452d5e6a512905d7a7b1fd852
extra : source : ff97ac763705dd01700fc605500047a1bd374297
Bug 1083211 - Reimplement BaseProxyHandler::set from scratch to follow ES6 draft rev 27 9.1.9. r=bholley.

The handlers affected by this change are:
  SandboxProxyHandler
  XrayWrapper
  DeadObjectProxy (but not really)

In the near future, I will change Proxy::set() to use this code when mHasPrototype is true.

Handlers that do not override set() but nonetheless are not affected:

*   WindowNamedPropertiesHandler. Not affected yet because hasPrototype=true, so
    set() is never called. However it's worth thinking about this one. It will be
    changing to use this code soon.

*   ScriptedIndirectProxyHandler. This class was the original motivation for the
    old bad code; its old bad behavior has been preserved (by changing it to
    override set() with the old code). This is necessary, alas -- there's in-tree
    code depending on these details of Proxy.create()'s behavior.

--HG--
extra : rebase_source : d969ba9db3f59beabcb9203201f4db2083b328db
extra : source : c69e27e865656ccd9180a82e5ca761e32140860c
Bug 1103152 - Remove JS_DeletePropertyStub, JS_EnumerateStub, JS_ResolveStub, and JS_ConvertStub. Make five mandatory JSClass hooks optional (nullable). r=bhackett.

--HG--
extra : rebase_source : a349ef612573aff8f87b995a65df94ae56cab13d
extra : amend_source : bbfe549fe0735d8b33ffff66d7eeddcc2ad042d2