added Merge of 2 polymorphic functions

- added operator `|+|` as an alias to `merge`
- Due to limitations of compiler, now you cannot write:
```scala
// compiles but forgets implicit cases from poly1 |+| poly2
val m = poly1 |+| poly2 |+| poly3

// works
val m1 = poly1 |+| poly2
val m = 1 |+| poly3
```