Bug 958540 part 1.  Factor out the uninit behavior of union structs into a separate method.  r=dzbarsky
Bug 958540 part 2.  Rename the existing SetAs* methods on unions to RawSetAs* and add new SetAs* methods that ensure the right type for the union.  r=dzbarsky
Bug 958540 part 3.  Switch the assignment operator on WebIDL unions to use SetAs*, not RawSetAs*, so you can use it to change the type of a union.  r=dzbarsky
Bug 990242.  Remove some dead Promise code.  r=nsm