Replace PostOrderVisitor with more general RecursiveVisitor

This reduces the number of recursive calls in the usage, making it
easier to make Namer tail-recursive
Parameterize RecursiveVisitor with return types to implement TyperVisitor
Add namer tests fixed by the visitor reimplementation
Merge pull request #121 from Kha/tailrec-namer

Use visitors in Typer