Add extra support for determining current ruby type

Add `rbx?` `mri?` and `non_mri?` Ruby "types", for rspec/rspec-core#1760 but that highlighted to me that we could use some refactoring across our repos to remove duplication of detection for ruby types
This logic seems suspect (here and in `kw_args_supported?` and `required_kw_args_supported?`).  Is the rbx/jruby/mri check in place because JRuby and RBx have releases that report their ruby version as 2.0 and 2.1 but do not support KW args and rebinding module methods?  What about when those projects release versions that do support those features (given that they are key parts of ruby 2.0 and 2.1....)...while we can update these checks in later RSpec releases, existing releases will not work properly on those interpreter versions.

If we're going to check the ruby engine we should probably put in a jruby/rbx version check based on the versions the maintainers claim they will support these features (we can reach out and ask).  Or we can consider doing feature detection using something like:

``` ruby
begin
  eval("o = Object.new; def o.m(a: 1); end")
  def kw_args_supported?; true; end
rescue SyntaxError
  def kw_args_supported?; false; end
end
```

...although, I'd probably want to skip the cost of the `eval` on MRI since we already can tell if the feature is supported through a cheaper version check.