Fixed #978 - Ensured path segments containing colons are decoded

Squashed commit of the following:

commit 171b9ad79f5d97375c525bb11649b923f91fced1
Author: Arthur Gautier <aga@zenexity.com>
Date:   Tue Apr 9 08:06:09 2013 +0200

    Change test to new pattern

commit b4c521963612c984efd96d57b81f6cf5542d3f3d
Author: Arthur Gautier <aga@zenexity.com>
Date:   Tue Apr 9 08:05:46 2013 +0200

    Add test for invalid encoded character

commit 8f13cca56e599f8807b20409baaaf640a79487b9
Author: Arthur Gautier <aga@zenexity.com>
Date:   Tue Apr 9 07:55:10 2013 +0200

    Fix as jroper suggested

commit 63f298c139b4726edae0795a6f404ca453ad512b
Author: Arthur Gautier <aga@zenexity.com>
Date:   Mon Apr 8 22:37:02 2013 +0200

    Do not return null if param is not correctly encoded

commit 81e48f853edfa62bdc7cb662be42b2186b8edf3f
Author: Arthur Gautier <aga@zenexity.com>
Date:   Mon Apr 8 21:46:16 2013 +0200

    non-encoded string should not return null
Removed the CI page and introduced a new page describing third party tooling. This page provides a comprehensive description of our usage of these tools and now includes YourKit.
Reload application on a non-Netty thread
Fix the Issues.md documentation page

Remove the dead link to the external app, and link GitHub tracker instead of Lighthouse
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.