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.
This ```compiledForFastRewriting``` must be computed after all auto-generated rules are included; this is explained in the Javadoc of ```ComputeCellsOfInterest```.

If a rule is transformed, this ```compiledForFastRewriting``` might change from true to false. But it is the responsibility of the kompilation pass to set it to false.

This information and many others are indeed computed and set by the kompile backend.

In short, there are two key time points for me to compute and set these fields. One is after all rules are properly created but the rewrite has not been pushed to the top. The other is when all transformations on rules are done.