Updated RubiniusVM metrics for Rubinius 2.3.0.

Rubinius 2.3 introduced a new constant: Rubinius::Metrics. This constant, and in
particular its method Rubinius::Metrics.data, contain periodically updated
metrics. This includes garbage collection data, information about locks, thread
counts, etc.

This commit updates the metrics collection process for Rubinius to make use of
Rubinius::Metrics. This also comes with support for aggregating data such as the
heap slots and method cache resets. Constant cache resets are not yet available.

I also rewrote the tests to not use any mocks (these were breaking parts of
Rubinius by the looks of it) as well as to make sure the important parts are
actually tested.

Tracking of free heap slots is not supported by Rubinius as it doesn't use a
memory allocation mechanism that produces free heap slots.