Pointer implementation and foreach loop for arrays

- Pointer implementation is complete for now.
- Fix bugs in template type parsing, we can now detect if we're missing one or more > after a template definition.
- Fix errors in shunting yard algorithm when right assoc operators had wrong precedence
- Foreach loops supports iterating arrays with simple syntax. Pointers or values can be used is counter variable.
- Internal code cleanup for compilation speed improvement and readability