Allow manual subclassing, use constants for request/response
Allow manual subclassing, use constants for request/response

Previously, it was difficult to use a manually created subclass of Sinuba
(e.g. class Foo < Sinuba).  This is because you really needed to use
Sinuba define, which creates a subclass automatically.  This moves the
logic from define into route, so you can do:

  class Foo < Sinuba; end
  Foo.use ...
  Foo.plugin
  Foo.route{|r| ...}

Now, define just creates a subclass and class_evals the block.  In
order so that use still works, the @builder variable is set at class
initialization time.

This also changes how request/response classes are stored. Instead of
storing them in options, store them as constants in the class.  When
Sinuba is subclassed, set the request/response constants in the
subclass to be subclasses of the request/response constants in the
parent class.  This allows ResponseMethods/RequestMethods added by
plugins in the parent class to still propogate correctly to the
subclass, but it means that we don't have to subclass every time a
plugin is used that includes RequestMethods/ResponseMethods.

janko-m/roda,janko-m/roda,celsworth/roda,jeremyevans/roda,Freaky/roda,duykhoa/roda,jeremyevans/roda,Freaky/roda,Freaky/roda,jeremyevans/roda,duykhoa/roda,kematzy/roda,kematzy/roda,johan--/roda,mikz/roda,johan--/roda,janko-m/roda,mikz/roda,duykhoa/roda,kematzy/roda,celsworth/roda,mikz/roda,johan--/roda,celsworth/roda