gstatomicqueue: Improve performance on push operations

Do not block fast writers until slower ones finish. Instead we store the data
at the right posistion and update the read index when all consecutive data
is available for readers.

Change-Id: I80546fed4f740ff20c3ddc30ae8f0ffc27108687

gstreamer/gstreamer#192
23 jobs for atomicqueue in 110 minutes and 44 seconds (queued for 34 seconds)
latest
Status Job ID Name Coverage
  Preparation
passed #417267
gst indent

00:01:08

passed #417266
manifest

00:00:51

 
  Build
passed #417273
build cerbero android universal

00:12:25

passed #417274
build cerbero cross win32

00:12:18

passed #417275
build cerbero cross win64

00:06:17

passed #417272
build cerbero fedora x86_64

00:09:29

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

00:10:36

passed #417268
build fedora x86_64

00:08:00

passed #417269
build nodebug fedora x86_64

00:06:41

passed #417270
build static fedora x86_64

00:14:35

passed #417271
build static nodebug fedora x86_64

00:10:48

 
  Test
passed #417278
check fedora

00:08:20

passed #417279
integration testsuites fedora

00:10:26

passed #417284
valgrind bad

00:06:54

passed #417281
valgrind base

00:07:37

passed #417280
valgrind core

00:26:51

passed #417285
valgrind ges

00:09:18

passed #417705
valgrind good

00:07:50

passed #417283
valgrind ugly

00:02:22

failed #417282
valgrind good

00:09:03

 
  Integrate
passed #417286
android universal examples

00:07:09

passed #417287
documentation

00:04:32