Normalise before abstracting over 'with' type

Otherwise we don't necessarily abstract over the scrutinee properly in
the resulting function.
This has necessitated a hack in Data.Bits, which I will sort out ASAP.