Run tests on the compiler thread to make them more stable.

This should fix the recent spurious failures we experienced.
Introduce class that contains all enabled test rules

For this to happen ScalaVersionTestRule has to extend MethodRule
directly.
Add ExceptionWrapper test rule
Revert "Run tests on the compiler thread to make them more stable."

Wrapping all tests in ask calls is ugly.

This reverts commit 8cc9d71578dcfb046f1cfbec7c83840203e76e13.
Execute all tests in ReusingPrinterTest in one ask call
Add override keywords to ReusingPrinter where necessary
Generate return type for defs with single expressions in braces

In case

    def foo = {
      0
    }

should be transformed to

    def foo: Int = {
      0
    }

by adding its return type, the result was

    def foo: Int = 0
    }

Fixes #1002268
Fix return type printing for methods that return Unit
Add space before return type of method that ends with special sign

Fixes #1002267
Print type keyword when the type of an object should be printed

I would prefer to fix this somewhere in the printing logic and not in
the construction logic of the tree but I didn't find a way to
differentiate the Ident trees correctly in the printer. For

  object X { def x = 0 }

the Ident trees of `X.type` and `X.x` seem to have the same shape at the
beginning.

Fixes #1002233