Only a single version of a dotnet-core runtime can be loaded at a given
time. This off-loads one of our tests to a subprocess (the same pattern
would work if we did this for the other test). Could be cleaner, but
this will do for now.
- Drop `Runtime` wrapper in favour of an abstract base class
- Use `pathlib` throughout and allow it as parameter
- Expose a `shutdown` method (that is a noop in most cases, but at least
it exists)
- Add functions to find all installed .NET Core runtimes
- If no runtime configuration is given, generate a simple one in a
temporary directory
* Add explicit paths for Mono on Darwin and Windows
* Install Mono in Windows runners
* Full paths for Windows and macOS mono libs
* Pass configuration for Mono through
* Cache chocolatey downloads