Separate out API type definitions and enum values

This resolves WrinklyNinja/CBash#8 and the `MacroDefinitions.h` part of lojack5/CBash#10. 

Cleanup of C++ code in `MacroDefinitions.h` is no longer required, as API users never see it.