Test installation

Add basic classes that could be re-used, and cover the installation script with tests.