Implemented queue capacity and made it so that publishers get blocked when a
queue reaches capacity.

Publishers can specify a maximum blocking time before raising
QueueFullException.