Refactor to support upcoming md5sum checking

This is a refactoring in support of #5, making the `newer` tasks async so md5sum hashes can be calculated for source files.  I'm bringing this in before completing that feature to debug some other issues with the new design.