09.08.2011
Bugzilla ticket: 350389, improve Scout RT testing support
BSI ticket: 103'068
Replaced ServerSessionClass and PrincipalName annotations by a more powerful ServerTest annotation that has the following features:
o annotation can be applied on class-level as well as on a test case level (method).
o @BeforeClass and @AfterClass methods are executed in the same session defined on class-level
o @Before, @Test and @After are executed per test method in the same session defined on class-level
  or in a separate session if the @Test method is also annotated with @ServerTest
o Tests can be executed as different users. Controlled by @ServerTest(runAs = "principal")
o The IServerSession class can be provided by the @ServerTest(serverSessionClass = MyServerSession.class) annotation
  or by setting the default value ScoutServerTestRunner.setDefaultServerSessionClass(MyServerSession.class). The value
  provided by the @ServerTest annotation is used if both are provided.
o An existing or new IServerSession is provided by an implementation of IServerSessionProvider. The default provider is
  DefaultTestServerSessionProvider and is set on ScoutServerTestRunner.setDefaultServerSessionProvider(). It can be
  overridden using the @ServerTest(serverSessionProvider = MyServerSessionProvider.class) annotation.

Migration:
o remove all @ServerSessionClass annotations
o remove all @PrincipalName annotations
o set the project's server session class in the server test application
  ScoutServerTestRunner.setDefaultServerSessionClass(ServerSession.class);
  ScoutServerTestRunner.setDefaultPrincipalName("defaultPrincipal");
