Use RBX_GC_DEBUG define used in other places here
Return of tracking the fiber data explicitly

This mostly reverts 1e1993372ef9b6843b116c6eeec94061a1a95ca7 and
introduces a separate mechanism for marking fiber data's. This marking
is used so we can clean up inactive fibers that are unreachable.

The reason for reverting the original change is not because it's wrong,
but because it makes concurrent gc much harder. The problem is that it
was scanning stacks inside the fiber marking, which is a problem with
concurrent marking.

Therefore we now use a mechanism where we can scan the not running but
still active fibers in the final phase of the mature GC, so we can do
that in the stop the world phases of concurrent GC.

The downside of this approach compared to the previous one is that
inactive young fibers will be scanned during young gc cycles and kept
active until promoted. Only after that will they be cleaned up. This
only happens for fibers that haven't finished and are not reachable
anymore, so this is not a huge issue.