Add a task that reads from the stream.

Most stomp libraries allow you to pass a function that will be called
when you receive a message, for example stomp.py. They also will call
this function without you having to ask it to through a receive message.

To emulate this functionality a Task is spawned which reads from the
stream and then checks to see if it got an instruction to shut down. At
the moment if it receives a message it will only print it out.

Note that the example sleeps. If it did not do so than the message would
not be revceived as the task would be killed.
Make task call callback when it receives a message

When a user subscribes to a queue they need to pass a function. This
function is stored and will later be called if a message is received
from that queue. Ideally this would be a closure, however doing so means
adding lifetimes and it was difficult to get running. It may be worth
trying to do this later.

An Arc<Mutex> is used to store the subscriptions. This is because both
the users task and the reader task need to have access to the same data
(the Arc bit does that) and need to be able to write to it (the Mutex).

The receive method was removed because it is no longer needed and would
not work as expected.
Merge branch 'background-reader'