Write attributes in to_dot

Hello,

This pull request adds attribute writing capability to dot.jl.

I expect there to be a method `attributes(e::E, g::G)` or `attributes(v::V, g::G)`, for edges and vectors respectively.  I added that method for ExVertex and ExEdge, and also fixed what I'm pretty sure was a bug in the ExEdge constructor, where it was ignoring the passed in dict of attributes.

I add the AttributeDict alias so it's easier to make a compatible graph from the outside.  

As an aside, I did a lot of wishing that we had real interface types while writing this.