Add serialization methods for wire protocol

These methods operate much like the existing serialization methods,
however an unlimited amount of arguments of type BuxtonData are supported.
The idea is to use BuxtonData even for the key argument, to enable much
easier parsing of messages back and forth.

The new deserialization method returns the number of parameters it
found within the message, and will set the BuxtonControlMessage type
as well as creating a dynamic array of BuxtonData's, which are copies
of the data that has been deserialized.

This enables us to quickly and efficently implement the wire protocol
by simply packing up all relevant values and sending them as uint8_t*
to be used internally. A method could quickly determine that there
were 2 parameters in the message, and the control message is set to
BUXTON_MESSAGE_GET, so we could safely assume list[0] is the layer,
and list[1] is the key. We could further assume that a count of 1
would make list[0] the key, and use priority to determine the layer.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>