Make Rewriter a type alias, rather than a trait
Use object functions for rewriter combinators

And remove unused rewriter combinators
Add inSequence for applying multiple rewriters

topDown and bottomUp now need only handle a single rewriter
Use consistent dup(children) method in rewriting
Add refold
Use refold in compilation