Fix return type printing for defs, vals and vars

The return type of a symbol was wrongly printed in the it doesn't yet
exist in the sources but it was added by a tree transformation.

The return type needs to be set by calling `setOriginal` on `TypeTree`
in order to print it explicitly in the output.

This also adds a `ReusingPrinterTest` class, which can be used to test
the printer output after tree transformations.

----

My first try to fix a bug so deep in scala-refactoring. I hope I fixed it at the right location.
The only check that is needed here to pass all tests is `body == EmptyFragment`. The other checks are copied from the DefDef printing function. Should I remove the checks or keep them for safety?