added information dictionary template class

the information dictionary is based on the dictionary class and add a
vector of a generic information class; the add function is overloaded
and starts by calling the dictionary add and then adds a new element to
the information vector if a new entry was added to the base dictionary

modified the dictionary add function from returning a boolean new entry
status to return exists, reused, or new entry status; this was needed so
the derived information dictionary knows when to append or replace an
information element or do nothing if the entry already exists