Rank constraints

Here is the set of changes to constrain node ranks.  In a Dot file, constraints appear as a [rank = "label"] property with distinguished "min" and "max" labels.  Internal to the layout code, the property is called prefRank.