Many compiler fixes

I have made a lot of changes and fixes to the new compiler. We have been running it for the last month in our project and it feels very stable. I think it is time to merge these changes into master.
Some of the changes are:
1. Full gcc preprocess support with macros and preprocess directives like #if, #else, #endif etc. It can't build Cappuccino without gcc yet but we are slowly getting there.
2. The compiler now works with IE8. Issue #1901.
3. Fixed issue #1830 when return statement didn't have whitespace before expression.
4. The compiler now generates all the code from the AST tree.
5. The compiler is finally 100% pure javascript and doesn't use any preprocess macros anymore.