Add a GCStrategy for CoreCLR
This change adds a new GC strategy for supporting the CoreCLR runtime.
This strategy is currently identical to Statepoint-example GC,
but is necessary for several upcoming changes specific to CoreCLR, such as:
- Base-pointers not explicitly reported for interior pointers
- Different format for stack-map encoding
- Location of Safe-point polls: polls are only needed before loop-back edges and before tail-calls (not needed at function-entry)
- Runtime specific handshake between calls to managed/unmanaged functions.