Merge pull request #2371 from ryoqun/rindex-offset-start

Adjust returning index with @start in Array#rindex
Inspect object in throw error message
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.
Use GCData pointer instead of reference

This is needed because we want to manage this outside the stack later
for concurrent GC. In that case we need to store the GCData on the heap
so the concurrent thread can use it.

Therefore we replace this in advance, so the change for concurrent GC
can be smaller.
Pass down STATE into collect_young and collect_mature

For concurrent GC we want to have access to it to start the marker
thread. Also updates the VM tests and fixes some test cases to really
test something properly.
Move definition of mark_ down for better compaction
Use existing timers instead of an additional custom one

We already have timers for the collection time duration, so we might as
well use those instead of keeping time manually here.
Remove unused stats instrumentation
Don't go through write barrier if not necessary
Remove unnecessary casts and use force_as where possible
Implemented CAPI rb_enc_codepoint_len.
Merge pull request #2374 from razielgn/capi-rb_enc_codepoint_len

Implemented CAPI rb_enc_codepoint_len.
Updated MSpec source to 1343524a.
Make String#<=> encoding-aware
Remove passing spec tags
Use Encoding.compatible?
Make encoding indexes match exactly to MRI
Increase coverage of String#<=> specs
Use encoding index for special case of String#<=>