alfred: Use well defined structs to create packets

The current packets sent over the network or over the unix socket were only
defined in the code but not by any struct. This makes it hard to find the right
place in the code to change when working with the struct. It is also makes it
easy to accidently use the wrong position when reading or writing from/to the
buffer.

Structs are introduced to define the fixed entries of a packet. The struct also
defines the position of the dynamic part followed by it using zero-length
arrays.

Signed-off-by: Sven Eckelmann <sven@open-mesh.com>