accept ... as a token, allow it for &rest
breaking change: remove &optional

this is to clean up arguments lists
i added &rest and &optional to be "lisp-like" but they look really ugly