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.
Haha, it's not intentional.  These lines are also known as "Chris got so excited that things finally worked he committed without reading his own diff first" or "yes, this is why Hy has a code review policy"!