router: Use type composition for httpRoute.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>

Conflicts:
	router/http.go
router: Bring TCP implementation closer to HTTP.

Fixes #56

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
router: Allow all HTTP methods.

This is something the user's server should be handling, really.
One example is a server disallowing POST requests. With this
removed, PATCH verb should now work.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>

Conflicts:
	router/http.go
router: Use similar data structures to HTTP for TCP.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>

Conflicts:
	router/tcp.go
router: Move listener handling logic into tcpRoute.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>

Conflicts:
	router/tcp.go
pkg: Move sseDecoder to the sse package.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>

Conflicts:
	controller/client/client.go
router: Update TCP test to work with the new backend structure.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
router: Use a mutex when doing a get/set on tcpRoute.service.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
router: Allow creating a new client pointing to a specific address.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>

Conflicts:
	router/client/client.go
pkg/sse: Add sse.Reader.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>

Conflicts:
	cli/service.go
sse: Trim trailing newline from the received data.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
router: Close routes before removing them

Signed-off-by: Lewis Marshall <lewis@lmars.net>