Fix echo disabled issue in docs project
#1366 Allowed query string parameters called queryString
Fixed #1350 JSON deserialisation preformance issue

Made JsUndefined error parameter call by name.

This ensures that when a field is not found during deserialisation, it
doesn't have to construct a string for the error message unless that
error message actually gets used.
Fixing #1356 - NPE when body parser terminates early

If the body parser terminated early, the RequestBodyHandler would throw
an NPE, because it would set the body promise to null to release
resources, but then wouldn't null check on it the next time it got a
chunk.

I've implemented the following:

* Rather than setting vars to null, I've made everything vals, and
  replaced the current handler with a handler that ignores the body, to
  release resources.
* Also did a refactor of RequestBodyHandler and added lots of comments,
  because it takes me at least 15 minutes to work out what's going on
  each time I come back to this class.
* Implemented tests for it, though they don't fail when the bug is
  present, because the only side effect was that an exception was
  logged.  However, the tests do ensure that handling long bodies works,
  both when the body parser consumes the whole body, and when it
  terminates early, and I don't think we had any tests for that before.
* I added a trickle feed mode to our HTTP test client, without in the
  handler was never going into the ignore body mode, because the whole
  body was handled before the takeUpTo parser had a chance to enter the
  Done state.
Merge pull request #1356 from jroper/1356-request-body-early-finish

NullPointerException when using parse.maxLength
Merge pull request #1366 from jroper/1366-routes-queryString

[java / 2.1.2] play.core.router.Router#queryString causes an error against a parameter named "queryString" in routes
Merge pull request #1377 from jroper/docs-echo

Fix echo disabled issue in docs project
Merge pull request #1350 from jroper/1350-json-performance-fix

Perf issue: KeyPathNode.apply method may compute expensive value which it ignores