Simplified the RequestLogHandler. It no longer set's async listeners or tries to catch exeptions etc.
Instead it simply sets the RequestLog instance on the HttpChannel. The HttpChannel#onCompleted method
then uses the log (if set) as the last thing before recycling the connection. It uses the actual
bytes written (eg after compression) and the actual status sent (eg if sent from a bad message).
Moved the finally block that resets the current HttpChannel and the
thread name after the handling of the COMPLETE action.
This is necessary because AsyncListener.onComplete() (triggered by
the handling of the COMPLETE action) may perform a
RequestDispatcher.forward() that requires the current HttpChannel
thread local to be set.
Made the SelectorManager use the CaS state machine for both locking and controlling
the mode of handling changes.
Replaced the concurrent change queue with a pair of array lists that are switched while the lock state is held
The HttpContent class has been reworked to store HttpField instances, we may be generated on
demand or instances of PreEncodedHttpField.
The encoding of HTTP2 fields has been generalized to handle both indexed and literal fields, selected
by header enum set.
Default servlet and response classes have been cleaned up in how they set response headers.
+ Adding more varieties of server side collection vs wrapper with error
handlers
+ Adding servlet version of tests to demonstrate behavior in servlet
context, when also using the mapped error handler
+ Adding SecuredRedirectHandler as option for those jetty embedded folks
to have a simple http -> https solution (can even be setup and bound
to specific connectors via the named virtualhosts concepts)
Introduced parameter "dispatchIO" in the relevant factories so that
they can be configured by users and connections will be created
taking into account this parameter.
For less configurable connection factories, this parameter is
currently hardcoded to either true or false depending on the case.
For example, ALPN and NPN connections have it to false, since they
don't do any blocking operation in onFillable().