Prototype k rewrite machine

I call it K rewrite machine but it's really just a simple interpreter so far. Eventually, this would become a a fast abstract rewrite machine and the starting point of native code generation.
The problem is the following statements.
```
for (Cell cell : solution.writeCells()) { // writeCells() returns List<Cell<?>>
    ...
    cell.unsafeSetContent((Term) rightHandSide.accept(substAndEvalTransformer));
}
```
I couldn't find a way to make the compiler happy. I would be more than happy to revise this code if you know a solution. I will just remove the annotations for now.