playbin: Handle error message with redirection indication

There are in the wild (mp4) streams that basically contain no tracks
but do have a redirect info[0], in which case, qtdemux won't be able
to expose any pad (there are no tracks) so can't post anything but
an error on the bus, as:
  - it can't send EOS downstream, it has no pad,
  - posting an EOS message will be useless as PAUSED state can't be
    reached and there is no sink in the pipeline meaning GstBin will
    simply ignore it

In that case, currently the application could try to handle that but it
is pretty complex as it will get the REDIRECT message on the bus at
which point it could set the URL but playbin will ignore it, as
it will only be for the next EOS, it thus need to set the pipeline to
NULL (READY won't do as it is already in READY at that point). And it
needs to figure out the following ERROR message on the bus needs to be
ignored, which is not really simple.

The approach here is to allow element to add details to the ERROR
message with a `redirect-location` field which elements like playbin handle
and use right away.

We could also use the element 'redirect' message in playbin, but the
issue with that approach is that the element will still emit the ERROR
message on the bus, leading to wrong behaviour. That can't be avoided
since in the case the app/parent pipeline is not handling the redirect
instruction, the ERROR message is necessary (and there is no way to
detect that the message has been "handled" from the element emitting the
redirect).

[0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
26 jobs for qtdemux_redirect in 50 minutes and 39 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Preparation
passed #569921
gst indent

00:00:38

passed #569920
manifest

00:00:41

 
  Build
passed #569931
build cerbero android universal

00:14:13

passed #569932
build cerbero cross win32

00:11:36

passed #569933
build cerbero cross win64

00:10:12

passed #569930
build cerbero fedora x86_64

00:09:43

manual #569935
gst-ios-12.2 allowed to fail manual
build cerbero ios universal
passed #569934
gst-macos-10.14
build cerbero macos x86_64

00:08:56

passed #569926
build clang fedora x86_64

00:09:45

passed #569922
build fedora x86_64

00:09:42

passed #569929
docker windows 1607
build msys2

00:15:24

passed #569923
build nodebug fedora x86_64

00:07:58

passed #569924
build static fedora x86_64

00:16:22

passed #569925
build static nodebug fedora x86_64

00:06:47

passed #569927
docker windows 1607
build vs2017 amd64

00:11:58

passed #569928
docker windows 1607
build vs2017 x86

00:13:47

 
  Test
passed #569936
check fedora

00:03:43

passed #569937
integration testsuites fedora

00:17:22

passed #569941
valgrind bad

00:08:33

passed #569938
valgrind base

00:14:26

passed #569942
valgrind ges

00:05:46

passed #570098
valgrind good

00:11:28

passed #569940
valgrind ugly

00:02:49

failed #569939
valgrind good

00:14:16

 
  Integrate
passed #569943
android universal examples

00:06:43

passed #569944
documentation

00:05:42