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

Updated: