agent: Implement agent support for modules and resource1 payload

This adds support to cockpit-agent for listing and loading module
resources.

See doc/modules.md for information about how modules are laid
out on the system.

doc/protocol.md contains information about the resource1 payload
ws: Add cockpit_web_response_abort() to stop streaming response

When we are streaming a web response, and half-way an error occurs
and we cannot get the remaining data to stream, we need to terminate
the web response.

cockpit_web_response_abort() does this by just disconnecting the
web response. The caller should be able to tell whether the data
is incomplete based on length header or chunking.
ws: cockpit_web_response_get_state() and expose web response state

Allow others to see what state a web response is currently in.
This helps prevent callers from having to carry around the identical
state.
ws: Strip query string when handing HTTP requests

We never use a query string, and some callers like jQuery add one
automatically in certain cases.
ws: Change how CockpitWebServer handle-resource signal detail works

To match subtrees, connect using detail handle-resource::/component/, to
match actual to level paths use detail handle-resource::/component
ws: Expose resources from remote hosts via HTTP

The resources are under the /cache and /res paths. See doc/urls.md
for more information.

We stream these from cockpit-agent using channels with payload
type resource1.

We also track when the web service requests checksum and module
listing information, and keep track of which host has which checksums
so we can send requests appropriately later.