Group edges that occur between non-parent nodes
Group edges that occur between non-parent nodes

- Previoulsy only edges that occur between parent nodes were considered for
  grouping.
- This would permit edges to remain ungrouped even if they are topologically
  identical in the cases that they did not include a parent/group node
- A good example of which failed is given by the following list of statements:
  st_phos_Y = Phosphorylation(mek, erk, residue='Y')
  st_phos_T = Phosphorylation(mek, erk, residue='Y')
- In the sense of our comparisons which look at the edge type, source, target,
  and polarity, these two are identical as we do not consider the residue.

What was done to fix this:
- a function get_edge_dict() produces a dict of edges groups. Keyed tuples of
  (i, source, target, polarity) with lists of edge ids [id1, id2, ...]
- edge groups are turned into new edges and added using _add_edge()
- edges in edge groups are dropped from the _edges list as they have been
  compressed now

pvtodorov/indra,sorgerlab/indra,sorgerlab/belpy,bgyori/indra,johnbachman/indra,johnbachman/belpy,bgyori/indra,sorgerlab/indra,sorgerlab/belpy,sorgerlab/indra,johnbachman/belpy,pvtodorov/indra,johnbachman/indra,pvtodorov/indra,johnbachman/indra,sorgerlab/belpy,bgyori/indra,johnbachman/belpy,pvtodorov/indra