Add an extension to pause VM isolates after tests (#1643)

Enables use cases like checking memory usage after a test has run.

This is primarily aimed at an internal use case, if it turns out to be
more widely useful we can better document it. For now it is considered
experimental.

Add a separate channel for communication between the VM platform and the
test isolate bootstrapping. Use a virtual channel for the existing
communication between the `RemoteListener` and the test control helper.
The only messages that are sent across this channel for now are a signal
from the platform to the isolate to pause, and a signal back indicating
that the pause is complete and the isolate can be killed.

Register a service extension (once globally) when loading a test for the
VM platform. The setting is global, which may need to be changed if we
extend this to support external use cases. Internal tests only ever run
a single test suite, so it makes no difference whether the setting is
global.
3 files changed