Add tests for SOCKS4a/5/HTTP/HTTPS proxy connection

- Modify Socks[45]CmdResponseDecoder so that it does not remove itself from the pipeline, because the removal must occur *after* the decoded response message is passed to the next handler.  If we remove the decoder in decode(), the data received from the destination will be forwarded *before* the decoded response.
- Implemented SOCKS4/5/HTTP proxy servers for testing purpose
- Implemented a parameterized test which runs a set of test scenarios