Stop using old-style supermixin syntax. (#1794)

* Disable supermixins

* Avoid old-style supermixins while maintaining Dart 2.0 compatible

* Enable stable again
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 234eada..055e5e7 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,6 +1,4 @@
 analyzer:
-  language:
-    enableSuperMixins: true
   exclude:
     - 'doc/**'
     - 'lib/src/third_party/pkg/**'
diff --git a/lib/src/model.dart b/lib/src/model.dart
index ec73332..6a5d129 100644
--- a/lib/src/model.dart
+++ b/lib/src/model.dart
@@ -1377,9 +1377,8 @@
 }
 
 /// Classes extending this class have canonicalization support in Dartdoc.
-abstract class Canonicalization extends Object
-    with Locatable
-    implements Documentable {
+abstract class Canonicalization
+    implements Locatable, Documentable {
   bool get isCanonical;
   Library get canonicalLibrary;
 
@@ -5272,7 +5271,7 @@
 /// accessing private member variables.  Do not call any methods or members
 /// excepting [name] and the private Lists below before finishing initialization
 /// of a [TopLevelContainer].
-abstract class TopLevelContainer extends Nameable {
+abstract class TopLevelContainer implements Nameable {
   List<Class> _classes;
   List<Enum> _enums;
   List<Mixin> _mixins;
@@ -5317,8 +5316,8 @@
 /// A set of libraries, initialized after construction by accessing [_libraries].
 /// Do not cache return values of any methods or members excepting [_libraries]
 /// and [name] before finishing initialization of a [LibraryContainer].
-abstract class LibraryContainer extends Nameable
-    implements Comparable<LibraryContainer> {
+abstract class LibraryContainer
+    implements Nameable, Comparable<LibraryContainer> {
   final List<Library> _libraries = [];
   List<Library> get libraries => _libraries;
 
@@ -5587,7 +5586,7 @@
 /// A [LibraryContainer] that contains [Library] objects related to a particular
 /// package.
 class Package extends LibraryContainer
-    with Locatable, Canonicalization, Warnable
+    with Nameable, Locatable, Canonicalization, Warnable
     implements Privacy, Documentable {
   String _name;
   PackageGraph _packageGraph;
@@ -6051,7 +6050,7 @@
 
 /// Top-level variables. But also picks up getters and setters?
 class TopLevelVariable extends ModelElement
-    with GetterSetterCombo, SourceCodeMixin, Categorization
+    with Canonicalization, GetterSetterCombo, SourceCodeMixin, Categorization
     implements EnclosedElement {
   @override
   final Accessor getter;
diff --git a/test/model_test.dart b/test/model_test.dart
index 1c540d5..3e68bf7 100644
--- a/test/model_test.dart
+++ b/test/model_test.dart
@@ -16,7 +16,7 @@
 import 'src/utils.dart' as utils;
 
 /// For testing sort behavior.
-class TestLibraryContainer extends LibraryContainer {
+class TestLibraryContainer extends LibraryContainer with Nameable{
   @override
   final List<String> containerOrder;
   @override