Improved semantics for BoundedBlockingQueue

- Changed so that blocking methods lock interruptibly
- When doing bulk removal on the queue, the signalAll is invoked

And changed some code to make it look nicer (I hope!)