This file contains definition of category Cat of all categories. In this category objects are categories and morphisms are functors between these categories.
Though Cat is not a concrete category, we use bundled to define its carrier type.
Category of categories.
Construct a bundled Cat from the underlying type and the typeclass.
Category structure on Cat
Functor that gets the set of objects of a category. It is not called forget, because it is not a faithful functor.