Each class is responsible for its own saving and loading from the XML data in order to reduce the complexity of the save code.
The cancel button now sends a signal to the saving thread to stop.
Implemented the file dialog, save progress dialog, and separate thread to save in (saving needs to be done in a separate thread so the main/GUI thread doesn't get blocked).