1) The pipeline must always be in a playable state. If you unlink
something, immediately link it to something else. Currently we do a
whole lot of preparation for playing in Project.play() which will no
longer work.
2) Whenever you unlink two elements, you must block the pad first so it
doesn't complain about a non linking error. I still have to figure out
the details of this, but it should be something like
pad.set_blocked(True).
Is it worth thinking about some utility functions to abstract away the
complexity here? Or can't it be done because each caller has to do it
in a slightly different way?
sil