Use download attribute for output link

Set download file name based on input file name.
Update Node to use DOMElement syntax

- Replace getFirstChildOfType() with getElementsByTagName()
- Rename tag_ to tagName
- Rename data_ to textContent
- Rename children_ to childNodes
- Add get/setAttribute()
- Remove numChildren()
- Remove childAt()

This will simplify the transition to using DOMParser and XMLSerializer.
Use DOMParser and XMLSerializer

This is much faster, and allows us to remove Node and the serializer.
Write output to a temporary local file to avoid limitations of data: URL