Add support for running commands as filters, passing standard input asynchronously from the client. This requires significant re-engineering of the client loop and should wait for better configuration since we don't want to do this with every command. It also introduces out-of-order responses and possible deadlocks to the protocol. docs/protocol-v4 has an initial draft.