add function to explicitly set up multicast paths
replace InitStyle parameter of Socket with explicit LivenessReporter instances
remove Socket::run, Socket::stop proxy methods
replace implicit binding with explicit binding

otherwise we would require one address per concurrent Socket instance,
not only per concurrent listener.
rewrite packet sending routine to have less explicit parameters
add synchronous receive method

re-add since lambdas aren't yet widely used/usable, and keeping state in
objects as was done here is oviously awkward.