Bug 854532.  Make _asInstance codegen always produce code in the same order.  r=khuey

Also fixes whitespace in _hasInstance and makes sure the .pp files are always in the same order
Bug 852219 part 1.  Don't mark JS-implemented interfaces with descendant interfaces as final.  r=khuey,mccr8
Bug 852219 part 2.  Add an infallible constructor for CallbackObjects which are already in the right compartment and use this to simplify construction of the autogenerated implementation of a JS-implemented WebIDL binding.  r=mccr8
Bug 852219 part 3.  Handle JS-implemented interfaces having a parent interface.  r=mccr8
Bug 852219 part 4.  Fix forward-declarations and includes for JS-implemented interfaces.  r=mccr8
Bug 852219 part 5.  Add tests for JS-implemented interfaces inheriting from other interfaces.  r=mccr8
Bug 852219 part 6.  Handle cases when the C++ class we want to actually inherit from is not the one that the WebIDL interface is mapped to.  r=mccr8
Bug 856841.  Don't pass in an implicit JSContext based on argument or return value types for JS-implemented interfaces.  r=mccr8
Bug 856819 part 1.  Refactor the dependency-sorting we do for dictionaries so that we can also use it for JS-implemented interfaces.  r=mccr8
Bug 856819 part 2.  Sort js-implemented interfaces in a given file so that the declarations in C++ come in the right order.  r=mccr8
Bug 855700.  Make returning an nsIVariant from a WebIDL interface work.  r=smaug