Change method name to thenApply to make it feel more promisey.

Also adds support for all of then. then(onFullfulled, onRejected, onProgress)