Add abstract type AdditionResult to the Add trait and have implementations of add() return the specific types (i.e. div |+| div : Div), because it was returning plain Element type before and that caused problems for further use of implicits (i.e. when using merge(a,b) where a is the result of an add())
Add another example of usage to the test file.