Log Events to EventPipe on Linux (dotnet/coreclr#11433)
* Implement the EventPipe object model for providers and events.
* Plumb Runtime Events into EventPipe (dotnet/coreclr#11145)
Plumb runtime ETW events into the EventPipe.
* Fix bug where all events except for SampleProfiler events were never enabled.
* Plumb EventPipeEventInstance through the EventPipe.
* Implement EventPipeFile and FastSerializer.
* Write event contents to the EventPipeFile.
* Only build EventPipe on Linux.
* Conditionally add a sentinel value marking event end.
* Send SampleProfiler events to the EventPipeFile.
* Fix provider ID printing to JSON file.
* Write the start date/time, timestamp, and clock frequency into the trace file.
* Support unloading of EventPipeProviders.
* Handle failure cases when we can't walk the stack or are shutting down.
* Fix a bug where we pass a null src pointer to memcpy.
Commit migrated from https://github.com/dotnet/coreclr/commit/
72ac46450bec8ea88ed023d9c1faf5a04556c834