defines a generic function max that takes two parameters of type T and returns the maximum
of the two values. This piece of code does not actually establish any methods. Rather, the
generic description acts as a template for the later establishment of one or more different
methods of different types. Actual methods are instantiated as: