Fix bugs and finish initial parallel algorithm #54

* Parallel implementaiton needs ALOT of tidying but produces the right
  answers
* Currently it is SLOWER than the sequential algorithm
* Needed to shutdown the executor service
* Sequential and parallel share alot of duplicated code that needs to be
  unified
* Previous algorithm hung because checking wrong data structure for
  explored successors