WIP fix for kw args issue - DO NOT MERGE

See https://github.com/rspec/rspec-mocks/pull/726
Alternate idea for this (untested sketch):

``` ruby
# in rspec-support
module RSpec
  module Support
    def self.matcher_definitions
      @matcher_definitions ||= []
    end

    def self.register_matcher_definition(&block)
      matcher_definitions << block
    end

    def self.is_a_matcher?(object)
      @matcher_definitions.any? { |md| md.call(object) }
    end
  end
end
```

``` ruby
# in rspec-mocks
module RSpec
  module Mocks
    RSpec::Support.register_matcher_definition do |object|
      object.class.name.include?('RSpec::Mocks::ArgumentMatchers')
    end
  end
end
```

``` ruby
# in rspec-expectations
module RSpec
  module Expectations
    RSpec::Support.register_matcher_definition do |obj|
      ::RSpec::Matchers::BuiltIn::BaseMatcher === obj || (
        obj.respond_to?(:matches?) &&
        !obj.respond_to?(:i_respond_to_everything_so_im_not_really_a_matcher) &&
        (obj.respond_to?(:failure_message) ||
         obj.respond_to?(:failure_message_for_should) # support legacy matchers
        )
      )
    end
  end
end
```

I *think* that would decouple this from rspec/rspec-mocks#513 and also solve the problem I commented on above.  rspec/rspec-mocks#513 isn't going to be super simple to solve, I don't think, so I'd prefer not to couple this issue to it if possible.  We can always refactor once we do implement that but not being gated on it is nice.