Replace Optics ProFunctor implementation by pair of functions

Simpler definition with much better performance (I will upload benchmark)