Bug 1065811 - Fix some soon-to-be rooting hazards. r=billm

When we starting forwarding isCallable and isConstructor over CPOWs, calls that
could potentially invoke this proxy trap can now GC.
Bug 1065811 - Expose isCallable()/isConstructor() in JS_PUBLIC_API. r=billm
Bug 1065811 - Stop statically computing callability/constructibility on CPOWs. r=billm
Bug 1065811 - Clean up ObjectId handling with static type checking. r=billm

While adding the CPOW flag for xray waivers, I discovered a bunch of
inconsistency and sloppiness with respect to our handling of object ids,
and a general lack of clarity about when the id included flags or not. Given
the fact that I'm removing static callability for CPOWs, we _could_ just get
rid of the flags, and store the xray waiver state on the answer-side only. But
I eventually decided that these kinds of flags (which are accessible to both
the Answer _and_ the Owner) had enough potential utility that they were worth
cleaning up.

It's worth noting that that utility comes with the large caveat that the flags
can't be trusted for security-sensitive decisions (at least in the parent->child
case), since they could be forged by a compromised child.
Bug 1065811 - Track Xray waivers with CPOWs. r=billm