Test improvements

I've tried to reduce duplicated code in the tests for subscription modifiers and ensure they don't randomly fail.

In the process, I also changed the behavior of ```MessageHandler.transition()```:
Previously, a QueueMessageHandler would transition to a default MessageHandler when ```throttle_rate``` was set to 0. However, the QueueMessageHandler constructor doesn't set the ```throttle_rate``` value, so it was possible to have a QueueMessageHandler with no throttling.

Now, a MessageHandler only requires ```queue_length``` in order to become or stay a QueueMessageHandler.

Someone should review if the new behavior is what it should be. It does reflect usage in the existing test cases.