Make MessageBody a GADT, generate singletons etc.
Make Parser and Encoding handle the GADT.
Use GADT in MQTT.
Add singletons to dependencies.
Remove handlers unequal to given ID in removeHandler.
Fix publish response flow.
More type safety in mqttBody.

Verify mqttBody returns a MessageBody of the same MsgType it was passed.