Context and transformers work

I thought it'd be nice to discuss on code, so here's a pull request. This a work in progress.

What I'm hoping to do is to implement part 1.1 described here: https://github.com/kframework/k/wiki/Design-of-the-new-compiler-parser

I'll occasionally ping people to get some reviews/feedback.
This shouldn't need to be passed a reference to the definition since it is also visiting the entire definition. The whole point was that the currentDefinition and currentModule fields would get updated automatically in AbstractVisitor whenever they are visited.