Switch over to using a custom HTTP application

Switch over from the Grape DSL, because it offers us superior control
over the internals of the application, possibly allowing for better
integration with the underlying EventMachine (I fear that the block/
proc magic that Grape uses would interfere with anything fancy we might
look to pull in the future).

General idea is:
* Top level API class is the rack compliant application
* API encapsulates an HttpRouter
* API seeds the router with discovered routes
* 'discovery' happens by inspecting object space to look for
  descendants of a 'Controller' class.
* Controller class forms a base from which all endpoint handlers
  (a.k.a 'controllers') inherit.