decodebin2: fix pad leak and problem with GWeakRef code

Follow-up to !160 and commit 6a99ad2c.

Firstly, don't leak the sinkpad. g_weak_ref_get() returns
a strong reference (unless it returns NULL), so that must
be unrefed, as detected by the playbin-complex and
discoverer unit tests.

Next, if we do that we get invalid memory access when the
final pad ref is dropped a few lines below after the
request pad is released. The reason for this is that
GWeakRefs are not movable once they're in use, because
their address will be stored inside the object. In this
case the GWeakRef was embedded inside the GstDemuxerPad
struct which in turn was embedded inside the GArray data
section, and when the GArray gets resized, the structs
move. Just KISS and use a list with individual allocations
for each DemuxerPad instead.
9 jobs for decodebin2-multiqueue-sinkpad-leak-fix in 26 minutes and 29 seconds (queued for 1 second)
Status Job ID Name Coverage
  Preparation
passed #190607
gst indent

00:00:35

passed #190606
manifest

00:00:33

 
  Build
passed #190609
build_disable_debug fedora x86_64

00:05:43

passed #190608
build fedora x86_64

00:05:53

 
  Test
passed #190610
check fedora

00:03:14

 
  Full Builds
passed #190612
build cerbero android universal

00:16:45

passed #190613
build cerbero cross win32

00:10:14

passed #190614
build cerbero cross win64

00:05:22

passed #190611
build cerbero fedora x86_64

00:09:38