Resend messages after handling network failure

In the event that sending a message fails because the connection with
the server has been lost, bunny can attempt to recover by
re-establishing the connection.  When this happens, the original message
is lost.  This pull request demonstrates how this can be remedied.

This pull request does not contain any new specs, since I wanted to
check that the approach is sound before working on this further, and it
wasn't immediately obvious how this should be tested.

Any feedback on the approach, and on how to test, would be very welcome!