Currently, scanning the remset is a procedure that accesses and stores data about it its current state many different places.
This results in many unrelated tasks that need to be done and additional verification code at certain points in the code, which bloats the code even more.
Capture all this information into a single G1RemSetScanState to be able to extend and change this mechanism in the future without touching a large part of the code base.
Also, scanning the remembered sets of regions in the collection set current employs a two-pass algorithm for no particular reason. Fix this.