Optimise optCoercion. (#9233)
The old optCoercion (and helper functions) used coercionKind and coercionRole internally. This was terrible when these had to be called at *every* point in the coercion tree during the recursive descent. This is rewritten to avoid such calls.
Showing with 187 additions and 94 deletions