tcp_X_socket_write_splice() was polling writes on the wrong socket.
Prevent socket memberfns (local|remote)_endpoint() from throwing.

As is standard in boost::asio, this just involves calling with
the boost::system::error_code overload.  Make sure that the errors
are handled sanely in the process.