[Sgen] Transport scan macros from sgen-descriptor.h to sgen-scan-object.h

This commit transport the scan macro from sgen-descritor.h to
sgen-scan-object.h. This is useful for modify at compile time
the scan macro according to the scan function.

I release this change under the MIT license.
[Sgen] Implement partial marking for big array of objects

This commit changed the gray stack to support work items. When a big
array of objects is marked, Sgen now create several work items. Every
work item rappresents a pieces of the array that must be scanned.
Since they are different pieces, the workers can now parallel scan
and mark the array, resulting in a better work distribution between
the workers.

I release this change under the MIT license.