Generalize auf/alaf to arbitrary Profunctors

This gives us stuff like indexing when using it with, say, foldMapOf
Merge branch 'master' of https://github.com/ekmett/lens