Add support for tagging tests and test cases.

Delivers the following features:

* tests and test cases can be tagged, with sensible defaults (test/test case names)
* `+[SLTest testsWithTags:]` allows a subset of tests to be selected while debugging
* the `SL_TAGS` environment variable allows a subset of tests and/or test cases to be selected in CI
* tests/test cases can be excluded by prefixing tags with "-"
* tests and test cases can respond to additional environment variables by overriding `+supportsCurrentPlatform` and `+testCaseWithSelectorSupportsCurrentPlatform:`

Many thanks to all (@jazzychad, @qiffp, @maxgabriel, @mrsamuelkim) who have weighed in on this topic. I think that this solution is general purpose enough to encompass the majority of your use cases.

In particular, it allows particular tests _or_ groups of tests to be selected, because tests are automatically tagged with their names; it does not interfere with the focus mechanism; it does not require that tagging is exhaustive, because tags can be excluded; and not only tests but also test cases can be tagged, using the same mechanism.