Adds Leonardo number type/class

Adds template code to make the sorting truly generic for both arrays and
STL containers (or any class with iterator, reverse_iterator, and []
methods defined). And in the global scope of the header, I defined a new
class to represent the set of Leonardo numbers, with the ++, --, and ~
(previous) operators and conversion to unsigned defined.

Implements all template boilerplate

The template mechanics for easily handling arrays and STL containers are
fully implemented; smoothsort isn't implemented yet, but insertion sort,
quicksort, and introsort are.