First set the pipeline to the PAUSED state to check if we are dealing
with a live pipeline or not. Then move to the desired state.
If we don't do this, it is possible that we receive a BUFFERING message
before we know that the pipeline is live and we would set the pipeline
to PAUSED and deadlock.
Just flushing the bus doesn't work here for some reason, so set
playbin to NULL state, which seems to clear all error state and
makes sure we do play the next playable song and don't pick up
'ghost' error messages from previous files on the bus.
Differs from a plain gst-launch-1.0 playbin uri=... pipeline in that
it can take multiple arguments and as such allows testing of things
like gapless playback, switching between different formats and the
like. Very minimal at this point, we'll probably want to add
interactive controls and more options at some point.
https://bugzilla.gnome.org/show_bug.cgi?id=553520