Do a second xpath search to match elements without parent node

Hey @jch, it turned out to be not that easy.

~~However I came up with a solution which needs a second `xpath` search. I changed the first also, because we don't need a `css` search. (`search` internally determines if we do a `xpath` or `css` search). To avoid creating a third list (happens for `(doc.xpath('.//text()') + doc.xpath('text()).each`), I process the nodes in two blocks. Therefore I factored out the processing steps in order to don't violate `DRY`.~~

**Edit**: I came up with a more elegant solution. Lets use the union operator to merge to queries.

One other possibility would be to ensure, that there is always a rode. Since this would affect other filters also, I din't bring this solution. Anyway, this fold be the following:

```ruby
def self.parse(document_or_html)
  document_or_html ||= ''
  if document_or_html.is_a?(String)
    DocumentFragment.parse("<root>#{document_or_html}</root>")
  else
    document_or_html
  end
end
```
Sure. The `|` operator is the `union` operator. It merges results from `.//text()` and `text()`. The first query catches all elements within tags (`search()` rewrote the query). The second query is for matching plain text nodes sich es `foo`.