Add ExternalRequestStage

Accepts connections from clients and responds to process command for
processing ExternalChannels.
Add ExternalChannel

Async channel that maintains a connection with client.  Creates
ExternalRequest objects upon each received requests and sends replies
back to client in the proper order.
Add ExternalRequest

Contains logic for handling a request and holds the reply it gets.