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