Simulation Testing Framework

There was some discussion of this a month back, but has been sidelined with recent mainnet issues. The broader goal is to provide a simulation framework to replace smoke tests with something maintainable and extensible enough to provide fuzzing against an environment with real funds. This framework will be a counterpart to regression tests - while regression tests run against the Thornode state machine and test discrete values, simulation tests should be defined as dynamic actions and checks that interact directly with the set of underlying daemons - creating valid checks against logic with no assumption of the underlying state.

This ticket encapsulates the work to create the framework and build an initial set of static tests on top of it to fully cover paths tested by existing smoke tests - which can then be removed.