Change PromiseResultHandler to be a class, allowing partial overrides

Not all features will have to handle both onFulfilled and onRejected, so
make it possible to only override one of the two (or, theoretically,
none).