[sgen-gray-queue] Change from index based to cursor based gray queue access to current element

This patch 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.
[sgen-gray-queue] Transform GRAY_OBJECT_(EN|DE)QUEUE to always inlined functions
[sgen-gray-queue] Add macros to compute first and last cursor position address on a section
[sgen-gray-queue] Add braces around one line code + comment condition
[sgen-protocol] Avoid multiple inclusion of sgen-protocol.h
[sgen-gray-queue] Add call to binary_protocol_gray_(en|de)queue on object enqueuing and dequeuing