Separate rank constraints into its own module
Handle self loops and sideways edges in ranker
More smoke tests
More smoke tests + fix for bbox with clusters