Tests: add beginnings of xmlBuilder test

Fleshing this out soon cause there is definitely a bug.
Tests: flesh out more of the XMLBuilderTest

Hum... still no bugs.
Tests: Fix a bug in XMLBuilder

There it is!

is_callable() is a not the right thing to use here cause
is_callable('next') == true because next() is a defined php function.

Obviously there are tons of string that are defined php functions.
All anonymous functions are just instances of the Closure class.
Tests: add failing tests

Ok, found the bug. SimpleXMLElement doesn't allow you to create tags
with a falsy value using the Object attribute setters.

This doesn't create a new child tag.
$this->_xml->{$tagname} = "" or false or 0;
XMLBuilder: fix the falsy value bug

So, SimpleXML SUCKS. I've replaced it with DOMDocument. Most people
advise using DOMDOcument because SimpleXML has so many quirks and
limited / broken support for DOM modification.

I spent several hours futzing with it. Trying to add an
Element with no "value" or at least a falsy value. I was able to get it
to add the Element, but it would always mess up the rest of the
document. The doc would bw wrapped in a base element and the XML version
declaration would be at the top.

This now seems to work just fine, and the several are now fixed and
tested.
XMLBuilder: encode "value" of xml tags

Add some tests and encode entities in the "value" string.

Apparently DOMDocument tries to parse the "value" of tags before trying
to encode it (doesn't make sense). It was failing on values like "&am"
and "&lt" with an "unterminated entity reference" error.
Merge pull request #8 from iFixit/parameters-fix-xmlbuilder

Fix XMLBuilder