Example of tests on many implementations (P23)

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 pull request is my suggestion on how to: have multiple implementations tested, have method names/description in test results and keep basic/simple method declarations. I did this with p20-p28 using https://github.com/jaceklaskowski/scalania/commit/ad2f08cd7979d97df7b35ef753b83d56e3d4396a ,if this PR gets accepted I will update the changes and send the full branch with another PR. Regards

The mentioned snippets are from https://github.com/jaceklaskowski/scalania/blob/master/exercises/src/main/scala/pl/japila/scalania/s99/S99_P22.scala