Modified makefile to not remake files needlessly, added CPPType
Fixed makefile
Got rid of SimpleType, changed function and operator definitions to rely less on the preprocessor and more on templates