router: Send an event when a backend gets drained.

An "all" event gets sent when all backends are drained.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
pkg: Add SSE writer package.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
router: Drain hook in the API.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
router: Use type composition for httpRoute.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
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>
router: Implement request pausing/resuming for TCP as well.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
router: Count active requests per backend for TCP as well.

Signed-off-by: Blaž Hrastnik <blaz.hrast@gmail.com>
router: Drain listeners for TCP.

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