Added optimization module

- The parser is now dumb: it doesn't combine anything anymore. The only
  purpose for it existing (over just using `map`) is for parenthesis
  matching.