Detect ModelShutdown events.

Hook into the Model.ModelShutdown event and reset the RabbitMQ
connection if the model is shutdown.

This can be simulated by using the RabbitMQ Admin UI and deleting the
RabbitMQ exchange the app is connected to.

In this case, the connection is not lost so you don't get a
Connection.ConnectionShutdown event.

Based on my testing you won't get the ModelShutdown event until you try
to publish a method.  In addition, checking the Model.IsOpen property
after calling BasicPublish() is not reliable as it may be true initially
after BasicPublish() is called, and then get set to false, sometime
later.   Hooking into ModelShutdown seems to be the fastest, most
reliable way to detect this condition.