A little extra diagnostics in the constraint log and also fixed a couple of warnings.
Constraint writer now translates coercions explicitly.

Previously, we were only adding a coercion as required (lazily) in the constraint writer. This meant that variables which were used at different points with different types could not be supported. Now the coercions are applied as they are shown in the PC, so we support as many types of coercion and variable use with different types as possible.