Created an abstract class for the PrintingState, which is later used by checkpoints and snapshots. In order to do that, modified the way xml are generated, to make it less code dependant.
Now checkpoint names are generated when needed based on the checkpoint type instead of keeping it stored in memory. Replaced the usage of a checkpoints LinkedList with a BasicList that uses a LinkedList internally. This will allow us to replace it with a file based list for large files. Enhanced checkpoints window. Changed the code that generates the GCode to restore state, so that it uses StringBuilder more than it was using before.