Cleaned up how unit testing is enabled

Added a -test command line parameter that can be used to run tests
instead of parsing the command line.
Removed the old #define TEST_FILENAMES logic.
Implemented data file reader

A data file is read line by line and used to populate a hierarchy of
attribute/value pairs in the format attribute=value
Attribute names and values are simple text. Values can contain quoted
sections and in those sections, \ is used to escape a quote (and
itself).
Values can also be compound structures, enclosed in { and }, of zero of
more attribute/value pairs.
A # starts a comment and the rest of the line will be ignored.
Whitespace is optional, which means {, #, } and = are forbidden in
attribute names, and must be quoted in attribute values.
An attribute’s value must begin on the same line as its name. The
closing } for a structure does not have to be on the same line as its
last attribute/value pair.