Miscellaneous small fixes made in the process of trying to debug the
bad file descriptor race condition bug.

None of these changes fixed the bug, but these changes seemed to be
correct regardless.
Remove the splice kick timer code.  It's too hard to debug and had subtle
problems that would lead to bad file descriptor errors from subtle
race conditions.

This execution model is easier to reason about and should offer similar
performance.  It is also not dependent on explicit timing, which is a
benefit on its own.
Remove now-unnecessary check for EAGAIN to polling-write mode in
tcp_(client|remote)_socket_read_splice; now we enter polling write
mode by default if the pipe buffer cannot be cleared in a single
optimistic splice.
doFlushPipeToX() is now only called when closing out a connection, so
there is no need for the action parameter.

This also effectively fixes the error handling path in the old
FlushThen::Splice and FlushThen::Read, which probably should have been
using flush_then_terminate().

Those paths were effectively replaced by tcp_X_socket_write_splice().
is_X_splicing() isn't needed anymore.