Prevent MessageBus from hanging forever in the second call to Dispose

It really should be [safe to dispose twice](http://msdn.microsoft.com/en-us/library/system.idisposable.dispose.aspx). Autofac was even forced to [work around this issue](https://code.google.com/p/autofac/wiki/SignalRIntegrationReleaseNotes).

#1088
(should be on line 305 but github does let me comment on this line)
Consider `if (disposing && _gcRunning != GCState.Disposed)` to not even get through all the hops if the object has already been disposed.