Fixes #1049: incorrect arity checking for kw arguments

There were two basic problems with the existing logic:
* Arguments could be treated both as kw args and as, e.g.,
optional args.
* An arity check for methods with kw arguments in the Arity class
is deferred to asignment time, but the check was not being performed
there, either.