Add "Edge Logic" support to PolicyAwareQuery

Authored by epriestley.


Add "Edge Logic" support to PolicyAwareQuery

Ref T4100. Ref T5595. This allows PolicyAwareQuery to write all the logic for AND, OR, NOT, and NULL (i.e., "not in any projects") queries against any edge type.

It accepts an edge type and a list of constraints (which are basically just operator-value pairs, like <NOT, PHID-X-Y>, meaning the results must not have an edge connecting them to PHID-X-Y).

This doesn't actually do anything yet; see future diffs.

Test Plan: arc unit --everything

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T4100, T5595

Differential Revision: https://secure.phabricator.com/D12455