Bug 907744 - Implement iterator result boxing in ES6 generators. r=jorendorff

This patchset causes the bytecode emitter to yield boxed return values
in ES6 generators, of the form { value: foo, done: bool }.

If the generator function does not end in a return, the compiler inserts
the equivalent of a "return { value: undefined, done:true }" statement
at the end.

When an ES6 generator finishes, it does so with {done:true} instead of
throwing a StopIteration.

This patch also ports lib/asserts.js to "default version" JS, and ports
ecma_6/Generators to use it.
Bug 909672 - Make cross-compartment cloning possible with JS_StructuredClone. r=jorendorff
Bug 912086 - Several Workers methods do not set their return value. r=mrbkap

--HG--
rename : dom/workers/test/bug911085_worker.js => dom/workers/test/rvals_worker.js
rename : dom/workers/test/test_bug911085.html => dom/workers/test/test_rvals.html
Bug 750436 - Tests for the HTML sanitizer. r=hsivonen