[runtime] Implement nursery canaries.
Use the new MONO_GC_DEBUG option "nursery-canaries"  to suffix each nursery object with a canary (guard) word, which is checked on each minor collection. Can be used to detect/debug
heap corruption issues.

Adding canaries to LOS is also easy if wanted - not sure about major heap.
[runtime] Convert String.InternalSetLength to an icall. Needed for canary support.
The change does not have a negative impact on StringBuilder performance; under variable-string-length microbenchmarks it seems to perform ~15-20% faster than the managed implementation.