Hide usage of Semigroup from error message

Use the implicitNotFound annotation to give a more helpful error message