Removes phils8.csp from source control

This CSP file is not part of the program, so has no place here.
Use full length prettyPrint if short enough

If prettyPrint gives an output of under 120 characters, don't bother
with prettyPrintBrief, it's readable enough as it is.
Show dialog box on error

Error messages show a dialog box as well as a status tip.
Complete separation of model from view

ProgramState is now a QObject rather than a series of static methods,
removing its reliance on MainWindow in favour of signals and slots. Can
be accessed by ProgramState::get(), which returns a reference to the
singleton ProgramState object.

Everywhere else in the model, if there is a reliance on some widget
class or on MainWindow, the code is reworked to use signals and slots
instead. In most instances this was already the case.