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.