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>