Implement keyword argument passing... (foo-func 1 2 :kw1 "bar") works!

This code is heavily, *heavily* based off of Guillermo Vaya
(willyfrog)'s work (#295) ... instead of defining its own keyword arg though, it
uses the "standard" :kwarg type, which is the main difference from
willyfrog's original branch.
Gah, fixed.