Catch exceptions while disposing

[Kestrel#9](https://github.com/aspnet/KestrelHttpServer/issues/9) revealed a shutdown problem when an exception is thrown during the final Dispose. This exception would omit setting the ManualResetEvent and the runtime would essentially deadlock.

This PR makes an exception during Dispose visible.
Dispose should never throw. We should fix Kestrel