Non-inline function declared as inline

DataValue::StructValue() was declared as inline but defined non-inline,
causing a linker error.
Made the test file a little more complex

Some nested structures
Fixed close struct and string reading off-by-one error

The close struct tag was popping the context stack twice, instead of
once and then looking at the top item.
The quoted-string reader was skipping the first character found because
it read a new character at the beginning of the loop instead of at the
end. If the first character was a quote, it would miss that and assume
the following close quote was actually an open.
Added *.new

.new files are test data output.
Formatted output of hierarchies.

Test code iterates over all files read and writes them out.
Implemented the data writer, which traverses the given hierarchy depth
first in-order, writing the contents to the named file. It indents each
line based on the depth.
Placeholder header and footer comments on the output file.