Bug 836301 - Assert against JSID_VOID in JSID wrapping. r=mrbkap

Luke explained to me that it should never get there.
Bug 836301 - Stop using JSRESOLVE_ASSIGNING to determine GET vs SET. r=mrbkap

This is just a heuristic, anyway, and some of the usage is downright broken.
There are two cases here:

1 - Deciding what to do for get{Own,}PropertyDescriptor. In these cases, we can
just enter with GET and rely on the filtering machinery to filter out dangerous
setters for security wrappers.

2 - Custom Xray props. None of these make sense in a |set| context. In fact,
    they generally have null setters anyway, so we can just assume GET.

The policy-entering code in XrayWrapper is super haphazard. We'll get rid of it
entirely later in these patches.
Bug 836301 - Add Special handling to allow us to call enter() for defineProperty on Xrays. r=mrbkap
Bug 836301 - Stop enter()ing with CALL for nativeCall. r=mrbkap

This is kind of nonsensical, because CALL means "the wrapped object is being
called", whereas nativeCall means "the wrapped object is being unwrapped to
have a JSNative invoked on it", which are two very different things.

We _could_ add a NATIVECALL enter() trap, but our current policy enforcement
around nativeCall involves overriding the trap itself, so we wouldn't use it
for anything. So let's just get rid of it.
Bug 836301 - Add tracking for whether we have a non-trivial enter() trap. r=mrbkap

This will allow us to skip the virtual function call for non-security-wrapper
proxies, which are the cases where we care most about performance.
Bug 836301 - Hoist enter() into BaseProxyHandler. r=mrbkap
Bug 836301 - Introduce an RAII class for entering policies. r=mrbkap

This will allow us to make some hard assertions that a given policy has been
entered exactly once.
Bug 836301 - Hoist enter() calls from {Xray,}Wrapper::foo into Proxy::foo. r=mrbkap
Bug 836301 - Hoist some assertions, remove a bunch of no-op trap overrides, and add assertions that we've entered our policy. r=mrbkap