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.
Merge pull request #19 from hying-caritas/arg-state

function.lisp: Add arg-state struct