Another experiment, try __sync_val_compare_and_swap.  This also
fixes issue #15 and passes test n_threads_mutate.  Out of the three
options the GHC version of cas() is the only one that causes the
spurious success errors.