Add support for finding node by multiple attributes

This adds a Rails-style `find_by` method that accepts a hash of 1 or more attribute/text pairs to match nodes against. A `find_by!` method was also added that raises a `Capybara::ElementNotFound` exception when no match is found.
can we make this:

```
find_by_attributes(attributes).tap do |node|
  raise Capybara::ElementNotFound if node.nil?
end
```