Rework API

Renames API classes, moves into separate files and reworks exceptions to be normal errors.
I think building and pushing gems is so easy that you don't need a wrapper.  It's literally:

```
gem build name.gemspec
gem push name-version.gem
```