Rework API

Renames API classes, moves into separate files and reworks exceptions to be normal errors.
Bundler's gem_tasks also gives you tagging, so you wouldn't need this chunk of code below too. From our four_tell gem, we get these tasks out of the box, which is kind of nice:

```sh
rake build    # Build four_tell-1.0.0.gem into the pkg directory
rake install  # Build and install four_tell-1.0.0.gem into system gems
rake release  # Create tag v1.0.0 and build and push four_tell-1.0.0.gem to Rubygems
```