First application of http pipelining code
Re-instated the need to wait for a message event to complete, then checking whether the connection is still open before deciding to continue with the iteratee.
Changed the group/artifact/package to align with how we do things
Applied byte array optimisation within the default upstream handler - this was part of the "back to scala ForkJoin, plus some fixes" commit (7bfb657). The entire commit could not be applied given some API breaking changes. In addition there's nothing compelling to suggest that moving to the FJP was improving performance. We might re-visit this if we see that performance isn't dramatically improved given the imminent round 5 of the tech empower tests.
Removed the lazy initialisation as this was causing lock contention under heavy load.
Removed the contention caused by requesting a logger
Removed lazy declarations and re-arranged JavaAction in order to minimise initialisation logic, thus reducing the amount of introspection occurring. In addition handlers are now cached by the router in order to avoid instantiation costs.
Removed unnecessary locks which were also causing contention.

Formatting

invocation needed to remain a def as its evaluation was being done just once.
Wound back caching handlers other than those belonging to Java. Java handlers are expensive given their introspection
Factored out the concerns within an action that are expensive given reflection: annotations. The router is now caching the JavaActionAnnotations data only.
Protected access to the internal Play logger as we don't want other code utilising it accidentally.
Removed an unnecessary future when it came to constructing the request iteratee. In addition the RequestBodyHandler was re-factored to a) handle this future-less iteratee and b) to factor out the concern of replacing the channel pipeline i.e. keep the removal the caller's concern as per the insertion of the handler.

Finally the above re-factoring potentially fixes a memory leak given that new default upstream handlers were created on the completion of chunked requests.
Added some documentation, streamlined some code by being able to remove the "redeemed" field, and incorporated Rich's suggested way of migrating from Play's Promise.
Updated test to reflect that the body parser is now run in the Netty IO thread given that we removed an unnecessary future from an earlier commit.
Restore old api to pass muster for API compatibility checking
Specifically excluded play.core files that have changed from the binary check test as these apis are internal.
An internal iterated thread is being used for this release