implements a rank based layout algorithm for static structure diagrams

## Related Documentation

@see org.argouml.uml.diagram.layout The layout algorithms is essentially inheritance based, in a way that it tries to order nodes by their inheritane structure first. Note that the edges have methods to follow their own layout. Thus generalizations are layouted (centric to the class) slightly different from realizations (offset to the right to avoid overlapping).
TODO: Implement layout for Notes and associations and other potential elements on the class diagram, e.g. standard text notes.