Java 8-ize.
Add back a post “lock” relinquish check to see if there is demand when draining requests.

This can happen if a request is made after we check inside the loop but before we relinquish.
First cut at support for streaming out a JSON list based on a publisher (#487).

The key distinction here is that we do not need to hold the whole list in memory. We use Jackson's streaming API to render each element, and send the bytes out in chunks using our existing chunk rendering support.