TestGroup : change `runs` from an int to a List<String> of identifiers and make both `runs` and `description` named optionals

Using identifiers clarifies the intent in the annotation, e.g.
`@TestGroup(description: 'cars', runs: const['bmw', 'audi'])
And it gives the Setup and Teardown routines some more meaningful
context in the TestRun