TR: better keyword errors

Produces better errors when arities don't match up for a keyword function definition. I plan to make an equivalent change for optional argument functions too later.
Actually, looking at this more, can't we replace the whole pattern with `(~or k:kw-formal f:some-non-kw-formal) ...` and then write some much simpler code?

Also, when you reconstruct the identical syntax object, use `this-syntax`.