gclosure: Optimise g_closure_[ref|unref]()

Using the CHANGE_FIELD() macro to implement reference counting leads
to poor code generation. This is due to -

* the fields of GClosure are defined as bitfields
* using volatile bitfields forces extra loads

Create specialised macros that operate on short (15bits for ref_count
and 1 bit for meta_marshal_nouse) and use them to implement
g_closure_[ref|unref](). The macros make use of the recently
introduced g_atomic_int16_[add|dec_and_test]() atomic helpers.

The existing asserts in place ensure that the value of ref_count
doesn't spill over into the additional bit used for atomic
instructions (meta_marshal_nouse).

https://bugzilla.gnome.org/show_bug.cgi?id=791706
8 jobs for closure/ref_count/devel in 15 minutes and 35 seconds (queued for 7 seconds)
latest
Status Job ID Name Coverage
  Build
passed #71865
cross-android_api21_arm64

00:01:37

passed #71866
cross-android_api28_arm64

00:01:38

passed #71867
cross-mingw64

00:02:11

passed #71864
fedora-x86_64

00:04:17

manual #71870
freebsd-11 allowed to fail manual
freebsd-11-x86_64
passed #71868
win32
msys2-mingw32

00:08:28

passed #71869
win32
vs2017-x64

00:05:57

 
  Coverage
passed #71871
coverage

00:01:39

73.3%