Changed constraints to take the following arguments:
1. element (i.e. :node or :edge)
2. action (i.e. :add, :assoc, :dissoc, :remove)
3. old-piece (the edge or node prior to modification, or nil if it didn't exist)
4. new-piece (the edge or node after modification, or nil if it no longer exists)
5. old-graph (the graph prior to modification)
6. new-graph (the graph after modification)

The hope is that this will enable more lucid and composable constraints on graphs.