Smash variance annotations

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