api overhaul. DO NOT MERGE

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.
Is it wise to have so many default parameters? I don't really know much, but it makes me nervous personally to have so many defaulted variables. But if that's what we need that's fine.

If we can get rid of the `is_index` variable, that'd be great. I think we can get rid of it from the `parse_args` function. So that's one gone.

`instance` we need to keep I think. Maybe we could add it to the class as an instance attribute??

What's `http_method` used for? Can we make it required?