Improve handling of types in preconditions.
We will now try to fix types to be >= 32 bits, so that predicates like width,
and countLeadingZeros and similar functions that do not have a fixed output
width will have enough bits for their output without imposing type constraints
when these functions are used in the source/target templates.
This solution slowly moves towards a more general solution to fix redundant type
issues (a perf. issue only).