Add an example of using type upper bounds to design more flexible algorithms.

Because Person mixes in the Ordered trait, you can run orderedMergeSort
on Lists of Person, because they are subtypes of Ordered.

Until we learn about how to use implicit parameters and view bounds,
this is the most general solution we can use.