Generics

Naturally, the ability to program generically different associative containers, is beneficial. The distinction in this library between data_types and mapped_data_types, and between value_types and mapped_value_types, somewhat complicates this.

The generic utility classes ease static detection of different associative-container types (e.g., whether they are map or multimap types), and the extraction of data from iterators.