Support Python 3's keyword-only arguments.

Previously, they would parse correctly in Python 3, but any keyword-only
arguments would be quietly lost, and the user would either get
`TypeError: foo() got an unexpected keyword argument...` or the
confusing behavior of having the keyword argument overwritten with
whatever's in the context with the same name.
Make a best effort at pre-2.5 compatibility.
changelog for pullreq github:7