Refactor `SLTest.h` to consolidate methods used for conditionalizing test runs.
Move `-[SLTest run...]` to `SLTest+Internal.h`.

As it need not and should not be called by users of Subliminal.
`+[SLTest supportsCurrentPlatform]` now returns `NO` if no test cases support the current platform.

As the documentation previously specified, and because it's weird to say that
a test can be run if none of its test cases can be run.

This change has two consequences:

1. abstract tests no longer support any platform. This is ok as they never run anyway
--`SLTestController` filters abstract tests from the set of tests to be run. We could
theoretically do away with that filter now, but it's probably better to be explicit.
2. tests with no test cases supporting the current platform will no longer be run at all
(i.e. won't even show up in logs). I think this is a better UX anyway.
Add `+[SLTest supportsCurrentEnvironment]` and `+testCaseWithSelectorSupportsCurrentEnvironment:`.

To allow test runs to be conditionalized based on environment variables.
Refactor `SLDraggingTest` to use `+testCaseSupportsCurrentEnvironment:`.
Add support for tagging tests and selecting tests based on tags.
Minor cleanup in `subliminal-test`.
Tests and test cases may be conditionalized by tags based on an environment variable.
Refactor the description of the `SL_TAGS` environment variable for clarity.

[skip ci]
Merge pull request #233 from inkling/jeff/tags

Add support for tagging tests and test cases.