Still working out message formats

Subclasses or templates with structs? If we could just use a template
encode() and decode() set of functions for any struct message payload
then that would greatly simplify things. Also need to think about the
format of action/command messages.