Fix case in Type to_string output
Remove never-entered branch
Add is_composite() to Type(s)
minimal_covering_type for composites

Indeed, there must be a cleaner way to do this.
Only emit parameter code in test function if defined
More (and renamed) tests for booleans: likely failing still
Use min_cov_type for getting the right boolean & implementation

Including emitting the right types and all.

Mattia, see markers for review: Feels wrong to me.