no match now throws proper error

I fixed the matching logic to handle when there are more arguments
than tests (mismatched arity) and I updated the exception that's
thrown to be an argument error.