Add a bunch of new components.

These include:

API header (the only file you'll ever need to include in the frontend)
Event system
Platform header file (need to find some way to do this without preprocessor)