Properties for testing that instances of the Functor class
perform correctly.

This testing requires an Eq instance, which not all Functors
actually have. It also requires a Show instance, which is also
uncommon. The Label1 wrapper may be useful in dealing with the
Show requirement.

Tests are supplied both in regular "unlabelled" form, and also
in a special "labelled" form, where function objects have
Labels attached to them. Because of this, the function used for
each test can be recorded in the test log, which can be quite
helpful.