Some threads are blocking each other during running. Ends up with program completing, but a couple of threads remaining in the background not doing anything.
Trying to make better thread executors and handlers so there should be fewer problems later
Provides Threads object to give access to global thread pools. Introduces check to see whether a task submits more and whether those also submit more tasks. This should prevent blocking all threads with submitting tasks and no actual computations.
Provides a different thread pool for each type of matrix task. Now runs without blocking.
Removes now unneeded isSubmitting methods from MatrixTask
Adds test case to a couple of tests which tests a matrix which has come up as MinMutInf before when it is not.
Fixes threading issues and provides a ThreadFactory which names the threads, so it is easy to see which threads are working at any one time.