Some XML reading changes

* Got rid of the XmlReader::attribute and XmlReader::intAttribute accessors which were potentially a little inefficient.

* Used readNextStartElement and skipCurrentElement in more places to simplify the XML parsing code.

* Introduced a bunch of setters rather than declaring friends. I guess I'm just not really fond of "friends" since it makes code harder to move around.