Make objects containing routes pluggable into Dispatcher

Changes how routes relate to a Dispatcher, moving the responsibility
of storing the routes away from the Dispatcher (previously Resource)
to any object that has a .routes attribute. This allows to create a
single Dispatcher in which Route objects from different objects are
plugged-in. For example:

  class A(Routes):
    @get("/a")
    def a(self, request):
      # ...

  class B(Routes):
    @get("/b/{item}")
    def b_item(self, request, item):
      # ...

  d = Dispatcher()
  d.plug_routes(A().routes)
  d.plug_routes(B().routes)

This will be the basis of the plug-ins for the HTTP server.