change listen semantics do something more sane for now and later

earlier on, libhexabus was allowed to bind the same address from
multiple sockets. this seemed to be a good idea, as it allowed
arbitrarily many sockets to listen and communicate with the rest of the
world. unfortunately, reliability semantics make this impossible to
easily do the same in a sensible manner.

thus, bind listeners only to the HxB group and port and disallow them to
send, but set SO_REUSEADDR for them, and allow bind() to claim any
address without SO_REUSEADDR.

users will have to open multiple sockets if the wish to listen *and*
communicate with devices.
add REPORT packets to libhexabus
add EPREPORT to libhexabus
add remaining packet types: ACK and PINFO
write sensible tests for *all* the packet types

what's tested:
* packet -> bytestream looks as it should
* bytestream -> packet -> bytestream is id mapping

all packet types are tested, all data types for ValuePackets are tested.

i've found a number of bugs writing these, so i guess it was worth it.
nicify serialization/deserialization of u16/u32/float
fix a warning
unifiy sync and async receive as far as possible
allocate two sockets in hexabus::Socket

one for receiving multicast, and only for receiving multicast, and
another for all other actions
Reimplemented sequence numbers with hashtable
Merged