G1ConcurrentMark provides information about the liveness in cards on a per-region basis.
This information will be crucial for improving remembered set scanning performance. It is prudent to extract this information into a separate data holder class so that we do not need to pass around G1ConcurrentMark everywhere.
Extract this information (per-card liveness, per-region liveness, and a new per-region live number of cards map) into a separate class to be owned by G1RemSet and passed around instead of multiple parameters.
Also clean up the code a little, adding basic logging and memory deallocation.