[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
Matcher classes are not intended to be used by end users. All matcher classes in RSpec::Matchers are `# @api private`.
If we think that in Capybara 3.0 those classes will have `# @api private` it's better to deprecate them now. It wil reduce the size of Capybara API and will show people roaming through Rubydoc.info that those classes are not intended for usage though their behavior won't be changed until 3.0 because of backwards compatibility.