Use the edge to hold more information to increase quality #1
Use full information we can retrieve from a node
Factor out the responsibility for slicing into it's own class
Fixes test
Rich comparison operators and better repr
Improves, but does not solve checking if we already have the edge
Easier to use the Edge as a dictionary key.

Thanks to
http://stackoverflow.com/questions/2909106/python-whats-a-correct-and-good-way-to-implement-hash
Use the new edges
New method to retrieve all edges by name.

We need that to create references between edges of the same name, e.g.
between variables on different line numbers
Fixed getitem method
Use the slicing class in the tests
Changed method, which expects Edge instances now.
Check the assign to find dependencies.
Keep always at least one assignment target
Fixed cration of an Edge
Changed signature of the Edge constructor.

I found the order really hard to keep right when creating edges. I find
this more natural.
Use a doctest to demonstrate what this thing is about.
Need this thing on a visitor, not per graph
No need for a separate class
Help appending nodes/edges