Homestyx hydra

R1:1089a48d4a66

Allow edges to be configured to prevent cycles

Summary:
Certain types of things we should be storing in edges (notably, Task X depends on Task Y) should always be acyclic. Allow `PhabricatorEdgeEditor` to enforce this, since we can't correctly enforce it outside of the editor without being vulnerable to races.

Each edge type can be marked acyclic. If an edge type is acyclic, we perform additional steps when writing new edges of that type:

- We acquire a global lock on the edge type before performing…
Repository: R1 hydra
Commit Date: Jul 9 2012