WIP #16464 generalised zipWith for up to 22 param functions

Train rides indeed are great for some kinds of work... :-)

Uses sbt boilerplate plugin (it's awesome, kudos @jrudolph) to generate all the 22 versions of the zipwith classes.
See "can work with 22 params" test to see what this effectively means.

TODO:
- [x] java api? - now *type-safa*!
- [ ] maybe be able to avoid `def f: Any`?
This is the Java DSL, default arguments are no good here.