Tests on many implementations P20-P28

Hi,
I am not a big fan of the latest changes. The "one test for multiple implementations" is a wonderful feature but it forces this obscure (in my opinion) function declarations. For instance this two:
```
def insertAt[T] = (T, Int, Seq[T]) => Seq[T] =(toAdd: T, position: Int, ts: Seq[T]) => ???
def insertAt[T] = (toAdd: T, position: Int, ts: Seq[T]) => ???
```
do exactly the same thing, but they need different definitions. This PR solves the problem in a different manner.
The mentioned snippets are from https://github.com/jaceklaskowski/scalania/blob/master/exercises/src/main/scala/pl/japila/scalania/s99/S99_P22.scala

EDIT: updated this PR from "Example of tests on many implementations (P23)" to "Tests on many implementations P20-P28"