Added require() for StringIO.

This is needed since the lexer checks if the input is a StringIO instance.
Reliably remove nodes from owned sets.

The combination of iterating over an array and removing values from it results
in not all elements being removed. For example:

    numbers = [10, 20, 30]

    numbers.each do |num|
      numbers.delete(num)
    end

    numbers # => [20]

As a result of this the NodeSet#remove method uses two iterations:

1. One iteration to retrieve all NodeSet instances to remove nodes from.
2. One iteration to actually remove the nodes.

For the second iteration we iterate over the node sets and then over the nodes.
This ensures that we always remove all nodes instead of leaving some behind.
Cleared up docs a bit of XML::Node.
Test for Document#children= with a NodeSet.
Tests for Node#children=.
Remove ownership when using NodeSet#delete.