[WIP] Use diffferent queries for searching + provide better failure messages

See #1241

This description has been updated several times to reflect current state of the pull request while it has been amended.

Added:

1. `assert_text`, `assert_no_text`, `assert_title`, `assert_no_title` methods
2. `:wait` option for `has_title?`, `has_no_title?`, `have_title`

Other user-facing changes:

1. Fixes https://github.com/jnicklas/capybara/issues/1179
2. Improved failure messages for `have_text` and `have_title` matchers. I think it would be better to improve failure message for `have_selector` in another PR as this one is already quiet long.
3. `Capybara::Node::Simple` now normalizes returned whitespace
4. `has_text?('text', count: 0)` will behave in the same way as `has_no_text?('text')`

Known backwards incompatible changes that probably belong to public API:

1. `Capybara::Query` was renamed to `Capybara::Query::NodeQuery` and made private api
2. `all_text` and `visible_text` implemented by drivers not longer normalize whitespace. It's done in `Capybara::Node::Element` now.
3. `description` method was removed from `Capybara::RSpecMatchers::HaveSelector`,  `Capybara::RSpecMatchers::HaveText`,  `Capybara::RSpecMatchers::HaveTitle` as I don't see enough sense in its existence
Why are these separated out?   Removing items from SESSION_METHODS could be considered a breaking change, so I'd rather not if its not actually necessary