Finish separating readable cancel/writable abort.

A few changes were made to readable cancel from the previous commit.

As per #67, writable abort essentially is a way for the external world to make the stream undergo the erroring-out process. Like readable's cancel, writable's abort takes effect immediately, but returns the result of promise-calling the supplied function, so you can use its return value to determine whether the abort succeeded or not. This promise-calling closes #59.

Closes #67.
Tidy up [[doClose]] by using promise-calling.