Web updates

Streams b046c93827f0

Lookup methods in constructors Lookup methods on underlyingSource, underlyingSink and transformer in the constructor. The main benefit is that identity transforms can be simply implemented without touching Javascript. Other less critical optimisation opportunities are unlocked for other stream types. The algorithm construction for used-supplied methods is changed so that a different algorithm is constructed depending on whether or not the method was supplied. PromiseCall() replaces PromiseInvokeOrNoop(); it is similar but accepts a function argument rather than a string, and doesn't permit it to be undefined. CreateAlgorithmFromUnderlyingMethod() is a new operation that encapsulates the logic to create an algorithm that calls the method or does nothing depending on whether or not the method is defined or not. It is used for all user-supplied methods except transformer.transform(), which has custom fallback behaviour. In many cases the controller argument must be included in the arguments to CreateAlgorithmFromUnderlyingMethod(). In order to permit algorithms to be created before the controller is fully initialised, the creation of controller objects has moved into the caller of the SetUpFooStreamBarController(). Constructors now throw for invalid method parameters, which results in some test expectation changes. Changing the methods or prototype on the underlying object after construction no longer does anything. Other than these edge cases there are no web-developer visible changes. Some SetUpFooController operations were erroneously marked as nothrow in the standard text and have been fixed, along with callers correctly annotated with "?". Fixes

Adam Rice