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 Name Job ID Coverage
  Build
passed cross-android_api21_arm64 #71865

00:01:37

passed cross-android_api28_arm64 #71866

00:01:38

passed cross-mingw64 #71867

00:02:11

passed fedora-x86_64 #71864

00:04:17

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

00:08:28

passed vs2017-x64 #71869
win32

00:05:57

 
  Coverage
passed coverage #71871

00:01:39

73.3%