Disable the workpool capacity limit when we are awaiting an RPC reply; we must read from the socket in order to receive it!
Slightly closer emulation of the BlockingQueue API.
Make some synchronisation changes and explain them.
Move the Semaphore up to be scoped to the WorkPool. If any WorkQueue aka channel is unlimited then they all are.
Merge in default
That TODO should really be done on this branch...
merge default into bug26396
merge bug26396 into default
Add a test and extra guard to prevent duplicate shutdown hooks that initial recovery

This ended up not being an issue in the Java client as much as in .NET.
merge bug26413 into default