SSHD-162: allow the specification of a thread pool to customize the allocation of the thread executing the I/O pumps
SSHD-164: allow the specification of the buffer size for the IO pump thread
SSHD-163: allow InvertedShellWrapper to implement SessionAware.

This allows implementations of InvertedShell to get access to the session when they also implement SessionAware.
SSHD-145: pump the (input/output/error) streams before checking if the process is still alive.

Otherwise the final data outputted by the external process is not properly flushed to the remote client when the process exists. As a result, clients can be left hanging if they expect that data.
SSHD-146: propagate the closure of the stream to the InvertedShell.

Otherwise the IO pump thread loops forever if the remote client closes the connection first.