This is a generalized form of Context that can be repeatedly cloned with less
impact on its performance, and which permits the use of an arbitrary ConjoinedProfunctor.

The extra phantom Functor is used to let us lie and claim a Gettable instance under
limited circumstances. This is used internally to permit a number of combinators to
gracefully degrade when applied to a Fold, Getter
or Action.