Key Generalization

Generalized all map keys via templates. Keys can now assume any type so
long as the type in question has a comparator associated with it.