circular defs for bimap/dimap and MINIMAL pragmas
code cleanup, missing MINIMAL pragma
rename stuff to squelch warnings
added another variant for playing with profunctors