Suite setup and teardown

Followup to here:

My current use case for setup/teardown at the class level in XCTest is for improving test performance. Some tests I have require creating an engine which is slow, so creating it once per suite vs each test run helps. It also needs to be destroyed before other test classes can create their own variant, so it can’t just be put into a static let. Having setup and teardown support on a suite would be very welcomed.

As for implementation, my first thought is conforming the suite to a protocol to opt-in.

@grynspan @smontgomery

Are you saying that the engine needs to behave like a singleton (i.e. only one instance may exist in memory at a time)?

Yes that’s right.