Refactor message types.

Don't distinguish between variable header and payload, one datatype per
type of message.
Add keepAlive to Connect.
Change type of wMsg to MqttText.
Export MqttText constructor.
Reorder fields for better parsing.
Reorder more fields.
Adjust MQTT.Parser to new types.
Adjust MQTT.Encoding to new types.
PINGREQ/RESP don't include a message ID.
Adjust Parser and Encoding to new PINGREQ/RESP.
Rename getMsgID and body to avoid shadowing.
Add getMsgID.
Add MsgType and toMsgType.
Adjust to new message types.