Support keyword arguments when checking for valid arity.

This changes the error message that was included in the ArgumentError
raised when arity was incorrect. It used to match the default Ruby
message, it now uses our enhanced error message. While it would be
technically more correct to emulate the Ruby one, ours is more useful and the
logic required would now have to be more complicated to support keyword
arguments.

Fixes #431.
Extract RubyFeatures module.
Remove unused local.
More specific argument matcher.
Rename ArityCalculator to MethodSignature.
Remove TODO (already done).
Drop coverage threshold to 96%.

The drop is due to the addition of more implementation-specific code
that has created more lines that are unable to be tested on a single
Ruby.
Support checking for allowed keyword arguments.