Module docstring
{"# Wide pullbacks
We define the category WidePullbackShape, (resp. WidePushoutShape) which is the category
obtained from a discrete category of type J by adjoining a terminal (resp. initial) element.
Limits of this shape are wide pullbacks (pushouts).
The convenience method wideCospan (wideSpan) constructs a functor from this category, hitting
the given morphisms.
We use WidePullbackShape to define ordinary pullbacks (pushouts) by using J := WalkingPair,
which allows easy proofs of some related lemmas.
Furthermore, wide pullbacks are used to show the existence of limits in the slice category.
Namely, if C has wide pullbacks then C/B has limits for any object B in C.
Typeclasses HasWidePullbacks and HasFiniteWidePullbacks assert the existence of wide
pullbacks and finite wide pullbacks.
"}