Allow projects to be set as policies
Summary:
- Renames PhabricatorPolicyQuery to PhabricatorPolicyAwareQuery (a query which respects policy settings).
- Introduces PhabricatorPolicyQuery, which loads available policies (e.g., "member of project X").
- Introduces PhabricatorPolicy, which describes a policy.
- Allows projects to be set as policies.
- Allows Paste policies to be edited.
- Covers crazy cases where you make projects depend on themselves or each other because you are a dastardly villan.
Test Plan: Set paste and project policies, including crazy policies like A -> B -> A, A -> A, etc.
Reviewers: vrana, btrahan
Reviewed By: vrana
CC: aran
Maniphest Tasks: T603
Differential Revision: https://secure.phabricator.com/D3476