Be explicit about which visitor will walk the next part of the tree.

RSpec 3.0 is unable to correctly report blocks with optional paramters
that are yielded by stubbed methods.

This was causing a number of failures in this test suite.

We had the option to continue walking the tree with the original
visitor, or to pass in a new visitor to the `descend` block.

I've removed that option - if the original visitor wants to continue
walking the tree, and not use a child visitor, it can just pass itself
in.

I think this makes the describe_to code a little easier to parse?

cc: @tom025 @mattwynne
Use `be_truthy` and `be_falsey` in specs

RSpec 3.0 has depreceated `be_true` and `be_false`.
Remove redundant clause from TAG_MATCHER.

`\w` already matches `\d`

```ruby
"5" =~ /\d/ # => 0
"9" =~ /\w/ # => 0
```

Prevents `warning: character class has duplicated range`
Rename `shadowing outer local variable`s.
Add `Test::Case#step_count`

RSpec have matcher used `__send__` to access private test_steps
collection :(
Fix RSpec version to ~> 2.99.

Nearly there with RSpec 3.0 support, but there's a strange error in
core_spec - seems the rspec receive implementation may be different
between 2.99 and 3.0?

cc @mattwynne @tom025