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
the title matcher never took options before this so raising for invalid keys here is here since no one can currently have tests that pass invalid keys.