Make user and host fields mandatory in message prefixes

I've never encountered a server which omits these.
Expose more convenience functions
Add IsString instances for message types