Make abs, lshr, and umax return types match argument types.

This potentially reduces unnecessary type variation, and fixes a crash
when lshr(undef,1) occurred in a precondition.
Actually constrain umax, abs to return same type as arguments
Merge pull request #8 from nunoplopes/functions-return-type-of-args

Make abs, lshr, and umax return types match argument types.