Preliminary changes towards supported canonically compressed input
Little bit of work describing the design decisions taken and above all why
Start to separate out the main runner code from the testing code
Move files to subdirectories to make it clearer which are primary engine source files
Further minor refactorings