Add &optional args to function definitions

Python doesn't have a separate concept of &key and &optional args, so I made the decision that the compiler should reject a combination of the two.

I threw in some &key-related tests as, well, there weren't any.