Smash variance annotations

Follow-up to #328.

This series of commits removes all occurrences of type constructor variance annotations in type classes, and additionally cleans up some leftovers from previous, partial attempts.

As a result, some of our data types needed to be made invariant. I'll add diff comments at these places, please review those carefully.