Update System.Activity API to be more readonly (dotnet/corefx#35863)
* Add back in Read-only-ness for ActivitySpanId and ActivityTraceId
I was able to determine a way of casting away readonly-ness (using Unsafe.AsRef),
so I was able to make ActivitySpanId and ActivityTraceId read-only (and cast away
the read-only when updating the cache). This works better becasuse it allows
refs to these IDs to be readonly and thus prevent update to Activity.TraceId and Activity.SpanId (which we don't want).
Note that for some reason on NetStandard1.3 ref readonly returns fail (says it can't find the 'InAttribute').
This error seems to be bogus, but the upshot is that older standards gives the C# compiler a problem so
we work around it by simply droping the read-only attribute for those (you still have all the functionality).
* Resolved conflicts
* Fix for NetStandard1.3
* Update to make the cache ref-equality friendly.
Commit migrated from https://github.com/dotnet/corefx/commit/
0846c3157735b00135500e20a61be9bf879859fa