Fix treatment of by name functions

By-name functions like `(=> T) => T` were not treated correctly before.
Witness the disabled `-Ycheck:gettersSetters` for transform/TreeCheckers
in thge test suite. This commit changes the scheme how => T types are treated
and fixes the problems with by-name functions.
Added a test for by name functions
Merge commits '474b2ae' and '46eb5ea' from #201 into umaster