Checkpoint work on poset query evaluation.
Various poset fixes.
Checkpoint more work on poset collections.
Add win-move test case, fixes to get it working.
Add another win-move test case.
More win-move test cases.
Test case cleanup.
Implement key constraints for poset collections.

Also change the representation of the graph: rather than storing pointers to
nodes in the "parent" Set of each node, instead store sets of node IDs. This is
marginally slower (extra hash table lookup to retrieve a node), but it avoids
potential problems when pointed-to nodes are mutated.