decomplect type hints & fns

stop using :tag, fns now are always tagged 'function, and the type-hint
is instead attach to :ret-tag. Add type inference case for :throw, just
'ignore. We now have warnings if you try to add numbers and functions.