libmn.hpp: add libmn::blocking_call()

This required a bit of machinery to do perfect function forwarding.
Changed call_later() to be a proper class (foreshadowing
make_call_later()) and also support the noexcept specifier.
Preserving noexcept across the blocking_call code generation stack
allows us to pass the return value from blocking_call() inline.
libmn_socket: initial version