Added cache.ml which pre-processes the token stream received from the scanner before passing it to the parser. It allows us to handle multi-level dedents. Added relevant test case.