Add known random seed capabilities
* Make each run store the seed passed to srand()
* Make the seed used available
* Allow a seed to be passed on execute, reproducing a run
Prettify and otherwise improve tests
Refactor execution process
Add YARD documentation