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 : 802e6f826db7038fec6303e2e1228b5c9dfc0c58
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 : bb4860a0eb6f32ae64c170dfe1c8d716d2a25bac
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 : 40b75b926ae59d91c80374fc5b25d2a459ecb717
Bug 1103368, part 1 - Forbid stub getter/setter arguments to NativeObject::{add,change,put}Property. r=bhackett.

--HG--
extra : rebase_source : 2885e93a5bd430eefb8035132e0174311e74747b
Bug 1103368, part 2 - Ban stub getter/setter arguments to js::baseops::Define{Property,Generic,Element}, DefineNativeProperty, and DefinePropertyOrElement. r=bhackett.

--HG--
extra : rebase_source : 5f80c2060ad8d637b15e2649a83e64e06860b63a
Bug 1103368, part 3 - Ban stub getter/setter arguments to JSObject::define{Generic,Property,Element} and js::SetPropertyIgnoringNamedGetter. r=bhackett.

--HG--
extra : rebase_source : 4eeced4ac54894561bc4411601487e2e9592559a
Bug 1103368, part 4 - Ban stub getter/setter arguments to js::CheckDefineProperty. r=bhackett.

--HG--
extra : rebase_source : c8e78f1d488cb830bf5362d539694cac786b95ab
Bug 1103368, part 5 - Make Class::getProperty and setProperty nullable instead of needing stub functions. Never store stub functions in JSPropertyDescriptors. r=bhackett.

--HG--
extra : rebase_source : 4fffe30636fdc5f0c708bc50f98c974c67cd4459