Rework API

Renames API classes, moves into separate files and reworks exceptions to be normal errors.
Sounds good, do it for me?