Resource channel

This implements resource channels, cockpit modules, and exposes them via HTTP. Nothing has been migrated to use them yet.

See doc/urls.md and doc/modules.md for details on how this is implemented and works.

To test, you can do the following:

```
$ mkdir -p ~/.local/share/cockpit/mymodule
$ echo '{ "description": "My module" }' > ~/.local/share/cockpit/mymodule/manifest.json
```

And then authenticate with cockpit, in a second tab go to: http://localhost/res/localhost/mymodule/manifest.json
We could cockpittransport louder when detecting unhandled messages.

```
diff --git a/src/cockpit/cockpittransport.c b/src/cockpit/cockpittransport.c
index abf6740..4f60383 100644
--- a/src/cockpit/cockpittransport.c
+++ b/src/cockpit/cockpittransport.c
@@ -79,7 +79,7 @@ cockpit_transport_default_recv (CockpitTransport *transport,
   json_object_unref (options);
 
   if (!ret)
-    g_debug ("received unknown control command: %s", command);
+    g_warning ("received unknown control command: %s", command);
 
   return TRUE;
 }
@@ -158,7 +158,7 @@ cockpit_transport_emit_recv (CockpitTransport *transport,
   if (!result)
     {
       g_object_get (transport, "name", &name, NULL);
-      g_debug ("%s: No handler for received message in channel %s", name, channel);
+      g_warning ("%s: No handler for received message in channel %s", name, channel);
       g_free (name);
     }
 }
```