Remove Pagination renderer

Simple APIs rarely need pagination. Complex APIs will probably need to
implement their own.

In any case, this doesn't belong in Crepe-proper. If we want to make a
more configurable plug-in, this could be a good start for
crepe-pagination.

Signed-off-by: Stephen Celis <stephen@stephencelis.com>
Flat world

Signed-off-by: Stephen Celis <stephen@stephencelis.com>
Create and mount Endpoint subclasses instead of instances

Multiple benefits:

- Increases composability and flexibility. If desired, Crepe::Endpoint can
  even be subclassed (like Crepe::API) and mounted in any Rack framework.

- Consistency and discoverability. Now, both API and Endpoint are subclassed
  in a similar way, and discoverable, readable constants are created for these
  subclasses for easier introspection.

- Future API possibilities. We could potentially allow Endpoints to be used
  instead of blocks when defining an API: `get '/user', with: UserEndpoint`

- Performance. It's hard to benchmark this precisely, but I'm seeing anywhere
  from 5-10% improvement. Nothing to laugh at.

Signed-off-by: Evan Owen <evan@cotap.com>
Allow Endpoint handler to be access directly and using #to_proc

Allows: `get &AllWiggles` inside `Crepe::API`.

Signed-off-by: Evan Owen <kainosnoema@gmail.com>
Merge pull request #49 from crepe/endpoint-subclassing

Mount Endpoint subclasses instead of instances
Allow routing to arbitrary Rack applications

This builds off of @kainosnoema's work in #49 and allows routing to Rack
applications using HTTP verbs:

```ruby
class HelloWorld
  def call(env)
    [200, { 'Content-Type' => 'text/plain'}, ['Hello, world!']]
  end
end

class API < Crepe::API
  scope :hello
    get HelloWorld.new
  end

  # Or...
  get :hello, to: HelloWorld.new
end
```

As long as it responds to `call`, it's fair game. However, a few notes:

 * One potential syntax could be `get hello: HelloWorld.new`. The current
   implementation of `Crepe::API.route` will end up tossing
   `{:hello=>#<HelloWorld:0x007ff226e7b060}` into the `**options` hash.
   Because that path can be totally aribtrary, parsing that out would get
   quite tricky. Because of this, I haven't supported that syntax.
 * This is really the same as `mount HelloWorld.new, at: :hello, method: :get`.
   Do we care about supporting/documenting both?

Signed-off-by: David Celis <me@davidcel.is>
Merge pull request #51 from davidcelis/rack-app-routes

Allow routing to arbitrary Rack applications