Base class for experiments.
Experiments should be reproducible, i.e. the settings should give all the information
needed to run the experiment.
Experiments should be deterministic, i.e. the same settings should always give the same results.
run
Runs the experiment.
Should set self.results