agile: update Test data generator does not detect cycles in object graph
sml: add checks to the hydration of system models

- copy across the assertions from the factory specs and modify code so
  that all tests pass - read modules correctly, fix bugs around the
  hardware model, etc.