XD-2118 provide a shell command processor

Implements a processor that can execute a shell command and stream data bi-directionally using stdin and stdout. For example, this may be used to execute a python script.  The ShellCommandProcessor requires an AbstractByteArraySerializer (from SI ip). The module is currently configured to use ByteArrayCrLfSerializer.

Current constraints/assumptions

* The shell command must be written for streaming data. That is, stays open indefinitely and operates in a request/response style. See src/test/resources/echo.py. Currently to work in a stream, it must not write anything to stdout initially, only respond to data on stdin.

* The shell command must comply with the configured serializer to delimit the payload (e.g., '\r\n' for the  ByteArrayCrLfSerializer). See src/test/resources/echo.py 

* The processor currently produces and consumes String only

* Anything required for running the command must be available on the container to which the module is deployed (e.g. python installed)

This PR does not include integration tests, but I have tested manually across transports in singlenode with 

        stream create shelltest --definition "http | shell --command='python <spring-xd-project-root>/extensions/spring-xd-extension-process/src/test/resources/echo.py' | log" --deploy

 
I did an initial implementation running the read write as an executor task returning a Future. That way, I could set a timeout. The case I was looking at was consuming initial output or errors when the process started. The problem I encountered was really weird. Looking at the echo.py example if I ran it with no startup message, the task would throw a TimeoutException. The next read after sending input would also timeout, even though debug showed the response coming back in the task thread, the Future still timed out. So frustrated and looking at how SI tcp and Storm handle this, they do I/O in the current thread.