Bug 825395 - Add debug checking for interleaved nsCxPusher and JSAutoEnterCompartment. r=bz,luke
Bug 824864 - Implement nsContentUtils::GetObjectPrincipal. r=bz

The SSM interface is super awkward.
Bug 824864 - Hoist the guts of CompileFunction into nsJSUtils. r=bz
Bug 824864 - Move consumers of CompileFunction to the nsJSUtils version, and kill the nsJSContext version. r=bz

Note that the three consumers were all XBL, and were all passing aShared = true,
which had the effect of passing null for the target object. So we actually want
to pass JS::NullPtr() (the HandleObject version of nullptr) instead of
aClassObject in order to maintain the old behavior (whatever that is).
Bug 824864 - Improve the API for EvaluateStringWithValue. r=bz

There are a few changes we make here:
1 - Having callers pass JS::CompileOptions directly.
2 - Removing aUndefined, which makes no sense and is unused by consumers.
3 - Making aScopeObject and aRetValue non-optional, via references.
3 - Adding an argument to optionally coerce the return value to a string.

Coercing jsvals to strings is the reason we currently have two nearly-identical
functions, EvaluateString and EvaluateStringWithValue, since the coercion can
trigger arbitrary script and thus needs to be bracketed by all the junk that
nsJSContext does. However, if callers can be guaranteed that the return value
will be a bonafide string, then they can easily extract the string themselves
if they so desire. This will allow us to combine the two functions.
Bug 824864 - Move existing consumers of EvaluateString over to EvaluateStringWithValue. r=bz
Bug 824864 - Remove nsIScriptContext::EvaluateString. r=bz
Bug 824864 - Remove unused optional arguments from nsIScriptContext::ExecuteScript. r=bz

This lets us get rid of a bunch of junk.
Bug 824864 - Rename EvaluateStringWithValue to EvaluateString. r=bz

Now that there's only one of them, we can get rid of the silly suffix. \o/
Bug 824864 - Use an nsCxPusher in EvaluateString, and pull the principal off the target object. r=bz

This simplifies a lot of code, and makes the function scope-agnostic.
Bug 824864 - Move responsibility for checking for JSVERSION_UNKNOWN to the one caller of EvaluateString that might pass it. r=bz
Bug 824864 - Pass EvaluateString out-param as a pointer, not a reference. r=bz
Bug 824864 - Fix Ms2ger nits. r=me