Add the ability to override the default handler class

This way, you can subclass Endpoint and configure your API to use it as
the default.

Signed-off-by: Stephen Celis <stephen@stephencelis.com>
Decouple API from Endpoint

Endpoint DSL methods have been moved to the Endpoint class, and the
Endpoint class will automatically be subclassed in new APIs and at every
change in scope. APIs delegate missing class methods to Endpoint
configuration.

This could allow Endpoint to become a simple protocol that could be
swapped out for a completely custom implementation.

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