Bug 983300 part 1.  Disallow Promise as a return type for legacy callers and enforce all overloads for a method either returning promises or not returning promises.  r=khuey
Bug 983300 part 2.  Introduce a GenericPromiseReturningBindingMethod for methods that return Promise return value.  r=khuey,bholley

This method effectively catches exceptions from GenericBindingMethod and converts them into rejected promises.  This handles calls to Promise-returning APIs from everything except Ion fast paths.
Bug 983300 part 3.  Convert exceptions in specialized methods returning promises into rejected promises.  r=khuey, efaust
Bug 983300 part 4.  Convert exceptions in static methods returning promises into rejected promises.  r=khuey,efaust