Speed up kernel tests

By using ephemeral file system in as many tests as poossible. Some things
have been changed to accept a FileSystemAbstraction to work with instead
of File objects directly to make this happen.

There are some tests still using the disk though, tests which will be
slightly trickier to change, but given enough time...

One nice thing that we've gotten rid of are tests that wants to produce a
non-clean state of a database. They did so by spawning a new process which
created some data in an embedded db and then crashed. Now with the
EphemeralFileSystemAbstraction you can take a snapshot of the files before
shutting down, and use that returned EphemeralFileSystemAbstraction when
working with the non-clean state. All this in the same process and w/o
even touching disk.

This whole change has the most speed improvements on Windows, but I'd
guess all OSes should see a boost.