Did a significant upgrade of the labeling and port placement code.
Added parameters - ports that appear on the top of the node with vertical type
Added constants - nodes that are drawn slightly differently.  Used to connect to parameters.
Added edge labels - an extra parameter on the compact edge spec to add a label
Fixed the width and height calculations for nodes. Everything is much smaller now.
Made the text width function more accurate meaning better feature sizes, better text placement