Topological order

The idea is to sort addins in a topological order. Each addin can define one of five things for _order_:
* `>X` - I must be immediately after the addin with id X

* `>>X` - I must be somewhere after the addin with id X (but not necessarily immediately) 

* `<X`- I must be immediately before the addin with id X

* `<<X` - I must be somewhere before the addin with id X (but not necessarily immediately) 

* `Number` - A numerical order which is used if none of the above is applicable


it's great that the bug is solved, but it's a symptom of the code structure.
you have the same use-case with 2 different strategies, append to end or prefix to start.
there is also other behavior that happens whichever strategy you use.
if you want to go crazy (like i enjoy) you can actually separate the strategy to a callback function that is an input argument of an internal "addToCollection" function, that does the common code and uses the strategy to add the new elements.
if you like to keep it simple, put the common code in a common function.