some code cleanups & docs
major refactoring: FireTask only takes in the spec of the FireWork, not the entire FireWork. This is more compatible with the DupeFinder, and in line with the idea that the spec completely determines what to run.