tunnel-manager: New module for managing tunnels to remote servers

The initial use case for this module is to connect user PulseAudio
instances to the system instance via tunnel sinks and sources. This
is the so called "cascaded setup". The point of doing that is to allow
multiple users to access the same hardware simultaneously.

The module connects to zero or more remote servers and builds an
internal representation of all sinks and sources in those servers.
Currently the module doesn't actually load any tunnel sinks or
sources, because the tunnel sink and source code have to be first
modified a bit (the next patch does that).

The remote servers are configured in a separate configuration file
that is named tunnel-manager.conf. Currently only the server address
can be configured, but I expect more configuration options to be
implement in the future, such as options for defining the policy of
which remote devices to use. Here's an example of the configuration
file syntax:

    [RemoteServer foo]
    address = /run/pulse/native

    [RemoteServer bar]
    address = example.com

The bulk of the functionality is not in module-tunnel-manager.so, but
in libtunnel-manager.so, which will be used also by the tunnel sink
and source modules to access the information that the tunnel manager
has previously queried from the remote server.

Change-Id: I3d41936451572b6341cfb9717e07b355d8449490
tunnel-new: Read parameters from tunnel manager when available

This prepares for loading tunnel sink and source module instances from
the tunnel manager.

If the tunnel manager is available, and the tunnel manager has
sample spec and channel map information for the device, then let's use
that information when creating the sink or source so that the tunnel
will automatically match the parameters of the remote device. The
remote device's proplist is copied to the tunnel too.

Change-Id: I2755d6fc984d9014bc039924dd1d51ea5689c22c
tunnel-manager: Load tunnel sinks and sources

This makes the tunnel manager load tunnel sinks and sources for all
devices in the remote servers, except for monitor sources.

Change-Id: Ie3793dfc8a500b2ae7ec6b2b0a82e49793361f91
packaging: Install the tunnel-manager files

Change-Id: I0502677165496449db85569f985de1a317f781b1
systemd: Disable TCP socket activation for user instances

The TCP port can be listened by only one process, so if the system
instance listens it, then user instances can't listen. Or if there
are multiple users, only one can listen.

Since systemd uses an "all or nothing" approach, the unix socket
activation doesn't work either when the TCP socket fails. It's not
terribly important to have TCP socket activation (at least at this
point), so let's just drop it from user instances.

Change-Id: I6258ee9c7a5ae7de4dcee209440de2df7a779e1d
Add configuration for the "cascaded setup"

If cascaded.pa is installed, then hardware should be managed by the
system instance, and user instances should use the hardware via the
system instance.

Change-Id: I6879bbcb50e131941c75b8c91a11e098d07428e5
Add systemd service and socket files for the system mode

Change-Id: If3783b3a86108dd968911613f5f63693cb5161c6
packaging: Add the pulseaudio-cascaded-setup package

Change-Id: I1a1504ac2496af127557c5d45f64fef4c284cdc6