added experiments 29, 30, 31 to visualise.py
Refactored so that it is possible to run a single sub-experiment in debug mode with loads of extra information printed.

The work mostly consisted of moving utility functions around to avoid circular dependencies between __main__ and other modules, which were caused by said utility functions not being in the module they belong to to begin with