Reorganise reachability package
Extract Reading Results Stream out into its own class
Remove assertj from modules pom
Speed up using memoization and add timeless trap

* Use memoization for getSuccessors. Now cache state -> Map<State,
  Collection<Transition>> that is cache a state to all its successors
  and the transitions that caused these
  If its already in the cache, dont bother recalculating it
* getTransitions can now use memoized getSuccessors
* Throw timeless trap exception when iterations exceed a value, lowered
  this value to 10,000 need to check with Will this is correct
* This required changing the structure of the tests and cucumber
  has been added to the pom to create a reacahbility integration tests
* add integration tests for four types of petri net
* Still TODO: Add a test for colours