Move database schema files into installation/data/
Move all installed source files into src/ sub-directory
Support running install.py/upgrade.py with any $PWD

Primarily make sure to specify the installation root directory as the
working directory when spawning child processes.  Also modify the testing
framework to run install.py/upgrade.py from another directory, if the
tested commit has the fixes.

Also some unrelated clean-up: use subprocess directly instead of via
installation.process.  (This ended up being quite a lot of changes.)
Add test that uninstalls and reinstalls Critic

Also add (non-advertised) --headless argument to uninstall.py which makes
it not ask for explicit consent.

The reinstall of Critic runs install.py (and upgrade.py, if run) with a
non-standard $PWD.  The normal (fully tested) install uses the typical
$PWD (the repository root.)