Eradicating main+test duality.

Everything is now handled by the test companion project.
More test companion project shenanigans.

Most build systems are going to require that we "host" the main project and the
test companion project from the same root path, so we can't use the root path
as the sole identifier for a project. We now need to include whether it's in
test-mode or not. We model that with Project.Root. If ever new niggling bits
need to be introduced, Project.Root will nicely encapsulate them.

This commit also includes code to auto-recompile the test companion project
when the main project compilation succeeds. That was written and being tested
when I discovered the root issue, so it's coming along for the ride.

I should really remember to git stash when I realize that I need to temporarily
change gears and do some revampery.