Context refactoring

Second part of https://github.com/kframework/k/wiki/Design-of-the-new-compiler-parser .

Some things listed in the wiki link may not be possible:

- ~~`Map<String, ASTNode> locations`: Not possible to move to Maude executor, because generated by `DefinitionLoader` which runs in kompile. We have to serialize this field and load in Maude krun.~~
- ~~`Set<Sort> variableTokenSorts`: This is still used, are we sure that this won't break anyting? Or is it a mistake in the wiki page?~~

These are also missing:

- `SetMultiMap<String, Production> tags`: This should be possible, but it's a bit tricky. The problem is that currently it's collecting while productions are parsed to prevent redundant computations. I need to find a way to generate it after productions are added.