GC: Silence compiler warnings
GCC 8 warns more agressively about mismatching signatures of function
pointers. To silence it, now we have an explicit do_gc_callback()
function of the correct signature, which calls do_gc(). Adjusted
do_gc()'s signature in the process, as there is no reason for it to be
semi-compatible with callbacks anymore.