function.lisp: Add arg-state struct

arg-state struct holds some per-argument data.  Using it we can avoid
passing and calculating these per-argument data all the times.