Adds the ability to patch together two XMLFiles

Based on the [RFC 5261](http://tools.ietf.org/search/rfc5261) with handling of Add, Replace and Remove for nodes and attributes. No handling has been added for namespace::prefix modifications at the moment.

Closes #118.

Here's an example patch:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <foo id="1"/>
    <foo id="2"/>
    <foo id="3">
        <bar>I was already here</bar>
    </foo>
    <foo id="4">
        Here is a text element.
        <bar>Now We're a bar.</bar>
        Here is a text element.
    </foo>
    <foo id="5"/>
    <foo id="6"/>
</root>
```
```xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <!-- test default append -->
    <add sel="/root/foo[@id='3']"><bar>I was appended</bar></add>
    <!-- test multiple prepend -->
    <add sel="/root/foo[@id='3']" pos="prepend">
        <bar>I was prepended first</bar>
        <bar>I was prepended second</bar>
     </add>
    <!-- test before -->
    <add sel="/root/foo[@id='2']" pos="before"><foo id="1.5" /></add>
    <!-- test after -->
    <add sel="/root/foo[@id='2']" pos="after"><foo id="2.5" /></add>
    
    <!-- test add attribute -->
    <add sel="/root/foo[@id='1']" type="@moo">grass</add>
    
    <!-- test before with combine text -->
    <add sel="/root/foo[@id='4']/bar" pos="before">
        Add me last to the end of the next text element. 
        <goo />
    </add>
    
    <!-- test after with combine text -->
    <add sel="/root/foo[@id='4']/bar" pos="after">
        <goo />
        Add me first to the start of the prior text element.        
    </add>   

    <!-- test replace element -->
    <replace sel="/root/foo[@id='2']">
        <foo id='2'>
            <bar>I'm new round here, fancy a drink?</bar>
        </foo>
    </replace>
    
    <!-- test remove element -->
    <remove sel="/root/foo[@id='5']" />
    
    <!-- test remove attribute -->
    <remove sel="/root/foo[@id='6']/@id" />
</root>
```
```xml
<?xml version="1.0"?>
<root>
	<foo id="1" moo="grass" />
	<foo id="1.5" />
	<foo id="2">
		<bar>I'm new round here, fancy a drink?</bar>
	</foo>
	<foo id="2.5" />
	<foo id="3">
		<bar>I was prepended first</bar>
		<bar>I was prepended second</bar>
		<bar>I was already here</bar>
		<bar>I was appended</bar>
	</foo>
	<foo id="4">
        Here is a text element. Add me last to the end of the next text element. 
   		<goo />
		<bar>Now We're a bar.</bar>
		<goo />
        Add me first to the start of the prior text element. Here is a text element.
	</foo>
	<foo />
</root>
```