Catch exceptions while disconnecting.
More SingI constraints.

Simplifies «toMsgType» etc. and some other code.
Pull «mkMQTT» and «setup» out of «connect».
Change error propagation in «connect».

Throw an exception instead of returning Nothing if handshake fails.
Remove commented field in «Header».
Reorder actions in «unsubscribe».

Remove handler after receiving UNSUBACK.
Fix filter condition in «unsubscribe».

Condition was inverted.
Revert "Only resubscribe if the connection was clean."

This reverts commit 2e3dd6744adfdb6dfb29f889bc01aac7cee6c4c2.
Use GADT record instead of seperate type per message type.