Initial work on getting rich events into traces.
This adds a new WebIDL-esque data type that tracks objects and their
events and types. It's used to start generating the rich event recording
functions required for replay, though it's off (and unimplemented) for
the normal event recording right now due to perf impact. Hopefully this
can be fixed in the future with string tables.

Adding the ReplayProvider that, when enabled, records time queries,
replaces Math.random with a seedable RNG, and listens for a few events.

Making flow IDs deterministic. This is ok for now as they aren't used.

More events and other information will be added in the future.