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 `+supportsCurrentEnvironment` and `+testCaseWithSelectorSupportsCurrentEnvironment:`

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.
If `SL_TAGS` were set to "FooTest,-foo", `[FooTest testCaseWithSelectorSupportsCurrentEnvironment:@selector(foo)]` would return `NO`, because `foo` is tagged with "foo". ("FooTest" includes it, but "foo" excludes it.) So I think the answer to your question is "yes". Is that what you expected?

I think I'll add this case to the list too.