Bug 882541 part 1.  Don't require all arguments after an optional argument to be optional.  r=khuey
Bug 882541 part 2.  Fix a bug that crept in with overloading a string and a nullable number and then passing in null, due to the number conversion being conditional on the input type in that case.  r=khuey

Also removes a footgun conversion operator on Nullable that was causing it to silently convert to int32_t.
Bug 882541 part 3.  Rework the overload resolution algorithm to WebIDL spec changes in handling of optional arguments.  r=khuey

The major changes are as follows:

1) The new algorithm no longer adjusts "argcount" based on the
   interaction of trailing undefined and [TreatUndefinedAs=Missing]
   arguments.  We never implemented this; just asserted that we didn't
   have to deal with this situation.

2) If the distinguishing argument is undefined and there is an
   overload that has an optional argument at the distinguishing
   argument index, that overload is selected.
Bug 882541 part 4.  Treat undefined as missing for optional WebIDL arguments.  r=khuey,ms2ger
Bug 925737.  Allow copy-constructing owning unions with safe enough members.  r=peterv
Bug 932421.  Stop including windows.h (via Hal.h) in Screen.h, so we don't screw up our bindings code.  r=smaug

Also stops Hal.h bootlegging Observer.h.
Bug 932870.  Cache the "invalid selector" state in our parsed-selector cache as well when doing querySelector(All).  r=smaug
Bug 932998.  Don't try to codegen code that keeps alive objects with 'owned' nativeOwnership, since we have no way to do that.  r=smaug
Bug 933087.  Make sure we don't violate stack discipline for Rooted, even when playing Maybe<Rooted> games.  r=khuey