handle client protocol lists properly

We fail to deal with lists of protocols sent by the client
by picking one from the list properly.  This fixes that and
adds protocol lists to the test client for regression testing.

Signed-off-by: Andy Green <andy.green@linaro.org>
Only check for '?' URI args during URI path parse
Make sure headers are parsed before proceeding.
Keep-alive: disable timeout and let TCP ka kill.

This is required for streaming HTTP connections.
Not sure if there's a more graceful way to handle this
(maybe resetting the timeout in the 'send'-side code?