Store parameters in function types

Need this so that parameters are properly propagated into definitions
where necessary, and not propagated otherwise.
Don't update after '?' when case splitting

lhs has no metavariables after all, and we don't want to update the rhs
anyway. Fixes #1464
Truncate results in primitives002 test

Precision varies, and since the test is meant to check the primitives
are implementing what they're supposed to, truncation is okay. This
stops the test failing on 64 bit machines.