Module generator improvements

Generators should parse a run by doing the following:

  1. Create all necessary Result classes for the final jobs in the current module, and check the existence of the results in the database.

  2. (If result exists) -> Do nothing.

    (If result does not exist, and prev module result did) -> queue download job, and create jobs normally

    (If result does not exist, and prev module result didn't) -> create jobs normally

Generators will need to be passed the dax/master_files objects to be able to add jobs directly to the dax. Similarly, we can move the save_results functionality to the generators.

Enhancements to Result class / Run classes should be handled first.