[sgen] Inline card table wbarrier with nursery check.
Our previous inline card table write barrier did not perform
any checks on the pointers, which means that it marked cards
for the major heap even if the references stored there were
not to nursery objects. Doing that is slightly faster in the
mutator but the nursery collections might take a lot longer
because objects might have to scanned unnecessarily.
This patch implements an inline write barrier that also
performs a nursery check. To that end we introduce a new
IL opcode, OP_CARD_TABLE_WBARRIER.
It is currently only implemented on x86. For architectures
that don't support it (yet), we automatically regress to the
old, non-checking write barrier.