Bug 443498 run subtrees of junit tests or a Java method when using custom runners

For example, for the following tree of tests that you might get
from JUnit’s ‘Parameterized’ runner

—————————————-
MyTestClass
    [0]
        testMethod[0]
        testMethod2[0]
    [1]
        testMethod[1]
        testMethod2[1]
—————————————-

it is now possible to run only

—————————————-
[1]
    testMethod[1]
    testMethod2[1]
—————————————-

by clicking on the “run” action on “[1]” in the JUnit View.

Furthermore, it is possible to execute

—————————————-
MyTestClass
    [0]
       testMethod2[0]
    [1]
       testMethod2[1]
—————————————-

by choosing “run as” -> “JUnit Test” on the Java Method “testMethod2”.

To make this possible, this contribution contains the following changes:
- if a test suite (e.g. “[1]”) has no class, the containers test class
  is executed and the suite’s name is passed to the runner as the
  testName. The test runner will then filter JUnit’s tree of test
  descriptions accordingly.
- The runner now combines three strategies to filter test descriptions:
  - If the test name is specified as “foo (bar)” (this is JUnit’s
    formant), the test description that is an exact match will be
    executed.
  - If the test name is “foo”, the runner will execute suites with
    the name “foo” and methods that have the name “foo” and are in the
    root tests’s class.
  - in addition to the two cases above, and if foo is a valid Java
    identifier, all test cases will be matched if the leading part of
    their description’s name that is also a Java identifier, equals foo.

These changes are not specific to the 'Parameterized' runner and are
intend to work with all custom runners. For the method-based filtering,
however, a runner needs to prefix test descriptions the method name.

Bugzilla reference:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=443498

Change-Id: I8c9ade21374b922c4d440f142d9592d72e062862
Signed-off-by: Moritz Eysholdt <moritz.eysholdt@itemis.de>
Bug 443498: [JUnit] support re-running 'virtual' suites, e.g. from the 'Parameterized' runner