Implemented attractor nodes and edges
Implemented attractor nodes and edges

Upon closer inspection cytoscape.js-dagre does not support edges that source
or target from parent nodes. This means that all such edges are ignored.
Previously, this would lead to all group nodes being ranked at the top,
resulting in a pretty wide graph. If virtual edges from individual grouped
nodes were left the node rank problem was resolved but group nodes would look
stretched out and unappealing. The compromise here is to pick one node from the
group and recreate Attractor edges on it that are the same as its parent' edges.
Currently the middle of each such group is picked. This resolves the problem
with really wide graphs and node rank. However, the layout is still not perfect
with many edge crossovers, really long edges for some nodes, and bunches of
edges jammed in tight spaces.

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