[sgen] Fix a card table bug on 64 bits.
When copying value types (like via Array.Copy) it was possible to
encounter a memory region going over the end of the card table array.
In that case we would overwrite data after the card table and fail
to mark cards at the start of the array.
It's hard to do a test case for this because we allocate the shadow card
table directly after the regular one, so the overwrite is benign. It would
also require allocating very large arrays (>2Gb) and run very slowly.