Implement R.evolve

evolve :: { k: (v → v) } → { k: v } → { k: v }
======

For the proposal, see: ramda/ramda#648
house style is to name `f` and `k` as `fn` and `idx` respectively