Add another combinator for Fun

It could replace shuffleF in the future
refactor
Use shuffleF2
Replace shuffleF with new version
Generalize shuffleTF in similar way
Add monad instance to the TFun
Add replicate

It's implemented using GADTs and Implicit type class taken from vinyl