Added an automatically generated deref function for all iterators (rather than using a raw operator*)
Reworked the upper/lower bound and equal_range scheme to use predicates/relationships that take iterators rather than values