Remove spliceit() function and treat EAGAIN on pipe writes as an error.

We should never encounter EAGAIN when performing socket->pipe writes
since we aggressively drain the pipe before reading more data from
the socket.  EAGAIN in this case would signify a full pipe, which
should never happen and thus should be treated as an error.

In the case of pipe->socket writes, EAGAIN means that the operation
would block.  This not necessarily a fatal error since we do make
an attempt to eagerly flush data out from pipes to the destination
socket before polling for writes on the destination socket.
We can indeed get EAGAIN for writing socket->pipe for non-full pipes;
it happens rarely because we are polling on socket readability and
not pipe writability.
We do need to check the amount of data in the pipe in splicePipeToX()
before trying to splice.  We may sometimes call into these functions
when there is no data available to splice; in particular, it can happen
from the splice read callbacks if splice returns EAGAIN indicating a
full or would-block pipe.

The only way this check could be discarded would be for those splice
read handlers to instead re-invoke the release handler without
attempting to flush the pipe, but doing that would risk not draining the
pipe in the pipe-full state.  We could attempt to work around that by
conditionalizing on the current number of bytes stored in the pipe, but
to do so would add complexity for a case that is rare, and branch
prediction ensures that it is not costly to perform this sanity check in
the entry of splicePipeToX().

Besides, checking on the entry of splicePipeToX() makes it easier
to reason about correctness, as it is obvious that splicePipeToX()
will act sanely when invoked when the associated pipe is empty.
Remove max-buffer-ms option; it's unused.
Add a README.