Use sum-type for 'Request' and add query phantom type.

The latter is used to mark 'QueryString', 'QueryId' etc. with the "kind"
of query, i.e. read|write|schema and track this information.