Bug 993438 - Add the necessary APIs. r=billm
Bug 993438 - Infer the eventual compartment for OMT-compiled script when the script is retrieved. r=billm

Currently, the script gets put in a compartment specified when the compilation
is initiated. Later on, when we retrieve that script and try to execute it, we
won't necessarily be in the same compartment. Currently, SM just handles this
and clones the script, but it's simpler and more efficient to just create the
script in the compartment of whoever calls FinishOffThreadScript.

Note that the existing code actually has a hazard in which the call to
GetBuiltinPrototypePure returns null - it just wasn't exercised in automation
(and was triggered by onNewScript-off-main-thread.js with this patch).
Bug 993438 - Fix up the XUL prototype cache. r=smaug
Bug 993438 - Fix up the Frame Message Manager. r=smaug
Bug 993438 - Stop implicitly cloning, and assertSameCompartment. r=billm