This commit switches the new buffered finalisation mechanism in BDWGC
using the disclaim API. Gc<T> objects which need finalising are
allocated with a 'disclaim' (i.e. finaliser) function pointer in their
first word.
These finalisers are added to buffers during GC which are then finalised
on a separate thread from within the BDWGC. The table below shows the
performance difference between this approach (called disclaim) and the
previous tip-of-tree commit (which used the much slower, channel-based
off-thread finalisation).
```
Benchmark Config Type mean (ms)
Bounce baseline micro 874
Bounce disclaim micro 114
BubbleSort baseline micro 1273
BubbleSort disclaim micro 144
DeltaBlue baseline macro 552
DeltaBlue disclaim macro 91
Dispatch baseline micro 726
Dispatch disclaim micro 120
Fannkuch baseline micro 364
Fannkuch disclaim micro 66
Fibonacci baseline micro 1559
Fibonacci disclaim micro 200
FieldLoop baseline micro 835
FieldLoop disclaim micro 179
GraphSearch baseline macro 175
GraphSearch disclaim macro 43
IntegerLoop baseline micro 1685
IntegerLoop disclaim micro 181
JsonSmall baseline macro 542
JsonSmall disclaim macro 125
List baseline micro 1447
List disclaim micro 149
Loop baseline micro 2099
Loop disclaim micro 231
Mandelbrot baseline micro 1172
Mandelbrot disclaim micro 160
NBody baseline macro 722
NBody disclaim macro 69
PageRank baseline macro 662
PageRank disclaim macro 150
Permute baseline micro 1281
Permute disclaim micro 156
Queens baseline micro 1017
Queens disclaim micro 131
QuickSort baseline micro 251
QuickSort disclaim micro 41
Recurse baseline micro 1313
Recurse disclaim micro 183
Richards baseline macro Failed
Richards disclaim macro 1722
Sieve baseline micro 1068
Sieve disclaim micro 215
Storage baseline micro 79
Storage disclaim micro 43
Sum baseline micro 864
Sum disclaim micro 105
Towers baseline micro 1309
Towers disclaim micro 153
TreeSort baseline micro 350
TreeSort disclaim micro 66
WhileLoop baseline micro 1962
WhileLoop disclaim micro 262
```