Add facility for plugins to register web routes

Rather than special-casing github and sql in zuul-web, add a
registration method to Connection to allow a Connection to register
routes.

Provide two types of WebHandler classes - a 'raw' class and a 'driver'
class. The driver class prepends '/connection/{connection}' to the
provided path.

Shift the github webhook and SQL web methods to use the plugin interface.

Change-Id: I065937b20447248e7894e1dfeec269faa6fd30d2
diff --git a/tests/base.py b/tests/base.py
index 4ba46a8..9c81856 100755
--- a/tests/base.py
+++ b/tests/base.py
@@ -1006,7 +1006,7 @@
 
         if use_zuulweb:
             req = urllib.request.Request(
-                'http://127.0.0.1:%s/driver/github/%s/payload'
+                'http://127.0.0.1:%s/connection/%s/payload'
                 % (self.zuul_web_port, self.connection_name),
                 data=payload, headers=headers)
             return urllib.request.urlopen(req)