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.
As far as I can see attributes are maps from string to string, but we want to keep data structures as values here. @dwightguth how do you suggest me to do use attributes?