finish move of sub-suites to run to outer loop and initform changes
Combined this means that
* slot-initforms are evaluated only once (previously it was
every time) and are effectively test-suite setup rather
than test-case setup.
* dynamic variables happen after initforms rather than before
* since we determine all the tests we're going to run
up-front, the counts of skipped test-suites changes.
* since an error may occur during test-suite creation, we
cannot rely on the test-suite being there during error
reporting so we move both testsuite-initargs and
current-step from the suite to the result.
* several bits in test-running can be simplified from methods
into defuns (yeah!)