run unit tests in random order
running in random order highlights some interference between tests (mostly logging being enabled), and is a requirement for
mutation testing (ie, all tests must pass when executed in a random order). Fix the failing tests so that everything consistently passes when tests are run in random order.
adding infection mutation testing
this adds the ability to run infection. It generates a lot of output, which is an exercise for another PR...