Cleans up the tasks to run multiple tasks on one matrix. Now build using a builder which can (almost) be extended by subclasses seamlessly.
Adds task to run on all matrices in a mutation class
Passes test most of the time. No idea why it fails occassionally, but almost certainly down to concurrency issues
Still not really working. Dunno why?