Decouple/Override Endpoint

When you can subclass Endpoint, you should be able to configure your API to use one as the default.

_E.g._,
``` rb
# endpoint_subclass.ru
require 'crepe'

class TestEndpoint < Crepe::Endpoint
  def hello
    "Hello, world!"
  end
end

class TestAPI < Crepe::API
  config handler: TestEndpoint
  get { hello }
end

run TestAPI
```
``` sh
$ bundle exec rackup endpoint_subclass.ru &
Puma 2.9.0 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://localhost:9292
$ curl :9292
::1 - - [17/Jul/2014:08:43:15 -0700] "GET / HTTP/1.1" 200 - 0.0008
"Hello, world!"                                                                                                                              
```

The PR also decouples API from Endpoint by moving Endpoint-specific methods to the Endpoint class itself.