Add LooseSignatureVerifier

See https://github.com/rspec/rspec-mocks/pull/726
This did help me understand it, thanks. Now that I'm understanding it, I've got a suggestion that I think will make it better.  I'm realizing that the caller uses this method to make a decision about what to do.  But then the caller can also inject the `kw_check` to control what this method returns.  That feels odd to me: the caller both uses this method to make a decision but also controls what it returns.  Why not just move the `kw_check` lambda logic the caller is currently injecting and instead move it to the call site where it can be used in the conditional as part of the decision being made there?

Essentially:
* Move the `Hash === x` check back into the `return false` line (line 69).
* Remove the `kw_check` arg entirely.
* Change the definition of `LooseSignatureVerifier#split_args` to something like:

``` ruby
def split_args(*args)
  kw_args = if @signature.has_kw_args_in?(args)
              args.pop.keys
            elsif RSpec::Support.is_a_matcher?(args.last)
              args.pop
              @signature = SignatureWithKeywordArgumentsMatcher.new(@signature)
              []
            else
              []
            end
  [args, kw_args]
end
```

Beyond fixing the odd "rely on but also control the return value of `has_kw_args_in?`" issue, this has a couple side benefits:

* Removes the duplication of `RSpec::Support.is_a_matcher?(x)` -- which your current implementation has twice in the same method.
* Makes `has_kw_args_in?` more accurate: an arg list of `[1, 2, some_matcher]` does _not_ have keyword args in it and it's a lie for `has_kw_args_in?` to claim that it does.

Thoughts?