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
I think we crossed wires here.  This should raise for anything that the HaveText matcher raised for before, it just should warn instead of raising for anything that was accepted but ignored before.  That is :text, :visible, :exact, :match, :wait I think