Started working on the caching mechanism:
   - store a mapping from module + string representation to AST
   - each time when trying to parse a rule, try to see if I don't have that rule already parsed
   - each time the syntax changes, the cache is cleared
Fixing copyright.
Cloning each rule before disambiguation.
Taking another approach in order to avoid cloning each rule after parsing
   - parse all rules and store them in a HashMap
   - save the hash to a file
   - disambiguate
Fixing location information for cached sentences:
  - storing a wrapper for sentence and original start location
Refactoring caching:
   - changed CacheContainer into a Map<String, CachedSentence>
   - made caching and parsing two separate steps: first lookup in cache then parse and remove deleted rules.
Added check for duplicate rules in the same module.
Should not call disambiguation on configurations.
   - fixing quine explicit
Trying to improve the way krun calls external parser, and recognizes kast commands (optimized for direct calls).
  - managed to fix regression/kast on windows.
Adding one more case to the hack. I'm not sure if we are going to go through with this, but I'm committing anyway so at least I'm handling all the cases.
Revert "Adding one more case to the hack. I'm not sure if we are going to go through with this, but I'm committing anyway so at least I'm handling all the cases."

This reverts commit 7dbfa6385fd74f0d073a8ec1f4ae1ac6a8257784.
Revert "Trying to improve the way krun calls external parser, and recognizes kast commands (optimized for direct calls)."

This reverts commit edc14d1202d1e74b85ac31efec3f05642b041fd1.
String comparison should be done with .equals() not ==.
Merge pull request #559 from kframework/caching-rules-master-all-at-once

Caching rules before disambiguation.