Use playbin as pipeline instead of uridecodebin (when possible)

GStreamer's playbin is used as pipeline instead of uridecodebin. This should make the pipeline code a bit simpler and easier to modify.
Specially the TransitionToNext() code could be replaced with playbin's internal transition for gapless playback. Unfortunately Spotify and background streams still need a special setup.

A fix for 4293 is included.

Also, error handling when the transition to the next song fails is corrected: The error (with wrong URL) is not emitted and the current song can play until the end. GstEngine will try to play the next song again anyway.