Improve exception handling in Runner#run

The `ensure`-block relies on `stderr` to be set, so this should be done at the very beginning.

Otherwise, exceptions raised in `rspec3?` trigger an “Undefined method `string' for nil:NilClass” error.
Refactor RSpec version detection

Move detection logic to new method `rspec_version`. Raise error if version can not be detected.

Also change `rspec2?` to not return true for RSpec 3 (as this is a bit misleading unless the method is named something like `rspec2_or_newer?`).
Use rspec binstub if available.

Look for "bin/rspec" and use it, if present. This drastically improves RSpec’s start up time for projects using an application preloader like Spring (as long as the preloader generates a suitable binstub).

Note that the binstub is only used if there is a Gemfile present (otherwise it would not be possible to determine the RSpec version).