Map and edge validation

Extended map functionality to include edges, different colors for nodes,
and node labeling. Also added validation to edges so that reflexive,
duplicate, and bidirectional edges are disallowed

TODO
Add gradient for edges of different types