api overhaul

Major restructuring of how the API works internally.

Do not merge yet. I've left a lot of the methods blank. For now, let me know what you think of the new way of specifying API endpoints.