Added build type switch and improved warning output.
Improved build time by reusing globally built files.
Improved code style and fixed compiler warnings.
Improved Object class by using Visitors instead of preprocessor macros.