Previously it would crash or not work properly when we were trying to check arity of any method on target object that had overridden the `method` method.
raise_error can support a matcher on the second argument but to be consistent should be able to take a matcher on the first (as with Regexps, Strings). This change enables this behavior by trying to match flexibly on either the exception or the exception's message. This also allowed a special case for Regexps to be removed. It also fixes a bug in custom matcher created for testing raise_error's composability. #762