Bug 880917 - Remove support for munging JS versions from JSD. r=luke

A quick grep of Firebug indicates that it doesn't use this. And even if I
missed it, doing so from a debugger with the current semantics is a feature
we can't support going forward.
Bug 880917 - Generalize JS_NewGlobalObject API to take CompartmentOptions. r=luke

This will be useful for versioning, as well as JIT options and all the other
stuff that eventually needs to move out of the JSContext.
Bug 880917 - Introduce an API for callers to set the version for a compartment. r=luke

This has lower precedence than 'overrides' and running script, and higher
precedence than the cx's version. We can migrate the API consumers who clearly
want something like this, which will eventually let us remove the override
mechanism.
Bug 880917 - Remove testVersion.cpp. r=luke

This test coverages seems to be mostly testing functionality we're removing like
overrides and version introspection. Let's just kill it.
Bug 880917 - Remove AutoVersionChecker. r=luke

Looks like cdleary added this back in bug 595691, as an equivalence to some
even-older-and-more-overly-cautious XBL code that was saving and restoring
the version across XBL calls. It doesn't seem like this should be an issue
anymore, and it's just a debugging aid to boot. Let's kill it.
Bug 880917 - Add support for "latest" as a version to evalInSandbox, and use it for sjs files. r=luke

Sandboxes always default to JSVERSION_DEFAULT in the browser. But XPCShell sets
up a ContextCallback that does JS_SetVersion(cx, JSVERSION_LATEST) on every
context that gets created, including the ephemerial Sandbox JSContexts. Since
httpd.js runs in xpcshell and evaluates SJS in a sandbox, we've (somewhat
accidentally) supported JSVERSION_LATEST in SJS, which certain SJS files have
taken advantage of. Let's continue to support it explicitly.
Bug 880917 - Convert JS_SetVersion API consumers to per-compartment versions. r=luke
Bug 880917 - Remove XPConnect version munging test. r=luke

This test calls the version() shell command, and expects it to work like an
override, rather than the dumb compartment-mutator that I'm turning it into.
Let's just kill the test.
Bug 880917 - Add an API to mutate the version on the compartment and use it from the shells. r=luke
Bug 880917 - Remove js_RevertVersion and associated shell functionality. r=luke
Bug 880917 - Remove JS_SetVersion and version override machinery. r=luke

\o/
Bug 880917 - Hoist defaultVersion into the runtime and remove it from the JSContext. r=luke
Bug 880917 - Remove AutoVersionAPI. r=luke

This doesn't do anything anymore. The compile options should generally carry
the right version through, with the exception of eval, which will end up using
the version of the running script anyway.
Bug 880917 - Add a clobber. r=RyanVM