Rework API

Renames API classes, moves into separate files and reworks exceptions to be normal errors.
What do you think about bringing in Bundler's helper for building and pushing gems?