With browser-based drivers, the has_value?, has_select?, and has_checked_field? matchers (and their negative counterparts) did not always work correctly. It is not possible to determine the dynamic state of inputs purely with XPath, because XPath has access only to the value, selected, and checked _attributes_, and only the corresponding _properties_ change in response to user input. This commit replaces the pure XPath implementation with one that retrieves all matching inputs and then filters the results using driver-specific means that do reflect user input.
We have too many top level files, we have multiple classes in the same file. This allows us to solve both problems, while also providing a good place for the new Capybara::Node::Simple (formerly Capybara::StringNode)
has_no_css? matcher methods.