Ensure typeclass are only highlighted at beginning

The only time Haskell typeclasses use the keyword 'class' or 'instance' is
when they are defined. To prevent confusion in classes like C# this will be
a much stricter definition.

Closes #347