Add support for listening on IPv6 addresses.
The following address formats are supported:
* tcp:[<ipv6-addr>]:<port>,
* tcp:<ipv4-addr>:<port>,
* tcp:<port>, and
* unix:<path>.
The IP addresses are parsed using `inet_pton()`,
only the formats supported by that function
are accepted.
The IPv6 address must be surrounded by square brackets,
they do not mean "optional" here. Specifying only the
port is equivalent to the following two addresses:
* [::]:<port>, and
* 0.0.0.0:<port>.
Address parsing has been made stricter: the port
must always be specified explicitly.
Fixes#1216.
Use the context work queue to schedule destroys from callbacks.
This is better because we can pass the destroyed object around and
implement just the action we need to do on it.
This starts breaking up the giant monolith that is the pulse-server.c
code into more manageable chunks by trying to split the module code into
individual compilation units.