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
1.  But we're not working on 3.0 and I'm not convinced we should require drivers to return normalized text in 3.0 for a couple of reasons.  a: why require that when its easy enough to just normalize ourselves, b: that means Capybara would have no access to unnormalized text which may or may not be useful. As is is currently every place that calls to_regexp also calls normalize which is a bit ridiculous

2. fine

3. then add a to_normalized_regexp method and call that instead