Improve formatting of graph generated by `brew graph`

I've gone in and tweaked the layout of the graph generated by the `brew graph` command to be easier to read, and prettier looking. Most noticeable is a top-to-bottom layout (rather than the previous left-to-right), and nicer fonts on everything.

More subtly, the ranking mechanism has been updated so that the "Safe to Remove" cluster is always at the highest rank (fixing a bug where non-leaf nodes could have been placed next to it,) and added better margins and padding. The rank separation was also decreased for a more compact graph.

Under the hood, the GraphViz output code in `brew graph` was updated to support attributes with a list of sub-attributes (for example, `graph [fontsize="11", fontname="Helvetica"]`) and to not put quotes around HTML-like labels in clusters.