Update BoundedBlockingQueue.scala

Minor changes:

- One blocking method was changed to take the lock with interruption consideration
- Bulk removal operations (clear & drainAll) are signalling all waiting.
- Also made it impossible do drain to when the provided collection and backing is same.