Add PugiXML dependency in CMakeLists
Add a thin wrapper around pugixml

This is almost a 1:1 wrapper around pugixml, but the interface makes
sense so if need be we can swap pugixml out and rewrite the internals of
the interface.
Add a tfXMLNode::ChildValue function

See
http://pugixml.googlecode.com/svn/tags/latest/docs/manual/access.html#manual.access.nodedata
for more information.

Also makes m_lastError no longer dynamically allocated, as copy
semantics meant there was occasionally a segfault when the destructor
was called.
Make tfXMLDocument inherit from tfXMLNode

PugiXML treats the document as a subclass of a node. This commit does
the same to our interface, so that we can access the document root node
via the document class directly.
Add a tfXMLDocument::Write(const char*) function

Writes the xml dom to a given file
Add Set methods for node/attribute name/value
Add {Append,Insert,Remove}{Child,Attribute} functions
Modify tfXMLNode Set and Get values

PugiXML uses special 'xml_text' nodes to handle the text value inside
nodes. This modification abstracts away from that model, and the setter
and getter methods for xml nodes work as expected.
Add XML parsing functionality to the project.

'include\libterra\XMLDXMLDocument.h' and 'src\XMLDocument.cpp' make up
the libraries ability to provide XML parsing and output.

This commit begins the dependence on the XML library 'pugixml' found at:
http://pugixml.org/.
Merge pull request #7 from tgascoigne/feature/xml_wrapper

XML Wrapper