[sgen-gray-queue] Use a cursor based accessing pattern to reduce memory indirection 

This consist in changing the way we access the current element value in the gray queue.

Before, we would save the index of the last element in the queue, then to access to the current value, we would have to make 2 memory access + 1 array offset access. Now we store a pointer to the current element, so we only need 1 memory access, thus reducing the number of memory indirection.

We see ~25% speed improvement in major gc collection time on gc-graystack-stress test.