Added case-insensitive reduplication.

StoreNoCase() converts the string to lowercase when generating the hash
key. It uses the unconverted string as the value.
Skeleton class for data writer

Set up a proper data writer class declaration with a skeleton
implementation.
Header guards, attrib names reduplicated case-insensitive

Added #ifdef/#define header guards.
Use StoreNoCase() when deduplicating attribute names.
Partial data reader, read/process file logic in main flow

Fleshed out the DataReader class. Line parsing is only described, not
implemented, but the overall logic is in place.

Defined master list of files read with their data hierarchy, id and
time loaded (so we can put it in a comment in the output file).

Added a way to read a named file, call the parser and add the result to
the master list.

Created a very simple data file for testing.