Add ConnectionContext

Used to track per-connection data, as opposed to RequestContext which is
per request.
Also move getRemoteAddress() from RequestContext to ConnectionContext (API breaking change).