Bug 861493.  When passing arguments to an Xray for a WebIDL constructor, make sure to do the argument unwrapping before entering the content compartment.  r=bholley,waldo

There are several changes here:

1) Adds some MutableThis methods to Optional, Nullable, and dictionaries to
   effectively allow doing a const_cast without knowing the actual type being
   templated over.  I needed this because I do not in fact know that type in
   the relevant code.  I'm open to suggestions for a better name for this
   method.
2) Adds some operator& to RootedJSValue to make it look more like a JS::Value,
   and in particular so I can JS_WrapValue the thing in it.
3) Adds a Slot() method to NonNullLazyRootedObject, just like NonNull has.
4) Adds an operator& to LazyRootedObject to make it look more like JSObject* so
   I can JS_WrapObject the thing in it.
5) Implements the actual rewrapping of the arguments into the content compartment.
6) Fixes a small preexisting bug in which we didn't look at named constructors
   in getTypesFromDescriptor (this was causing my tests to not compile).
7) Changes Xrays to not enter the content compartment when calling a WebIDL
   constructor.
8) Adds some friend API to report things as not being functions.
Bug 766583 part 1.  Stop declaring dictionaries as const on the stack in bindings code.  r=smaug
Bug 766583 part 2.  Stop declaring sequences as const on the stack in bindings code.  r=smaug
Bug 766583 part 3.  Stop declaring nullable things as const on the stack in bindings code.  r=smaug
Bug 766583 part 4.  Stop declaring strings as const on the stack in bindings code.  r=smaug
Bug 766583 part 5.  Stop declaring optional arguments as const on the stack in bindings code.  r=smaug
Bug 766583 part 6.  Stop declaring unions as const on the stack in bindings code.  r=smaug
Bug 766583 part 7.  Stop declaring variadic arguments as const on the stack in bindings code.  r=smaug
Bug 858969 - Refactor dynamic toolbar so page is offset and not overlapped. r=kats,nrc

Refactor the dynamic toolbar code so that the ownership of various properties
is clearer, and the page is offset by the toolbar instead of being overlapped.
This fixes problems with the scroll origin of the page not corresponding to
the visible origin on the screen.
Bug 864000 - Document nsSVGTextFrame2::mPositioningDirty better. (DONTBUILD) rs=jwatt