Make it possible to set initial explicit connections for new nodes

Currently this possibility is used by the native protocol. Playback
streams can specify node name(s) instead of a sink name as their
initial routing.

If the initial explicit connections can't be made, the node creation
fails (this matches the old behavior: if the requested sink doesn't
exist, stream creation fails).

This commit introduces the "explicit connection request" objects.
Those are used by the router to keep track of what explicit
connections have been requested, and also to know how to handle
situations where those requests can't be fulfilled (sometimes a
failure should result in some node being removed, and sometimes
the request should be forgotten, or it's possible to not do anything,
just leave the request in the system waiting for a time when it can
be fulfilled).

I started to move to a model where there's a separate routing plan
object, which has no knowledge of the currently existing connections.
I felt that it was impossible (too complex) to work with the old model
of reusing the existing connections in the planning phase. So far the
new routing plan object doesn't have any functionality, but in the
future it should manage the state of what connections have been
allocated and what properties those connections should have once they
are implemented in the execution phase. The actual connection objects
should be created, updated and removed during the execution phase,
when the final plan is known.