Move the iteration-specific logic from RunConfig.__train to RunConfig.run (or a new utility method, called by run), and create the state.json file before we start dispatching to the task-specific functions for phase.
The resolution to this issue must harmonize with any revisions to notions of "current state" developed in #23.