INT-3433 commit

INT-3433: Fixed NIO deadlock (or timout if the CallerBlocksPolicy is used) with Bounded ThreadPoolTaskExecutor.

JIRA: https://jira.spring.io/browse/INT-3433

I have signed and agree to the terms of the SpringSource Individual
Contributor License Agreement.
Unfortunately, we can't just "skip" the read; it might (does) work but will spin the CPU because when we exit `readPacket()` we'll re-enable the `OP_READ` key and wake the selector, which will immediately see there's a read ready and re-run this task. That will happen continually in a tight CPU loop until an assembler thread is available.

I think we would have to go ahead and do the read and put the data into `rawBuffer`. In other words do the read, but don't do the `flip()` and `sendToPipe()` if there are no assemblers.

That will avoid the CPU spinning, but now we are stuck with data sitting in the `rawBuffer` and no assembler reading it (even when threads become available). One not-very-elegant solution might be to use the `taskScheduler` to schedule an assembler to run in, say, 100ms (and keep doing so) when this condition occurs.

I can think of a few more elegant solutions (e.g. having the connection register that it is in this state and when an assembler exits, we look to see if any connections are in the state).