Eliminate relative imports where possible and workaround inheritance problem in reexported classes (#1675)

* Eliminate relative imports where possible (and not in test package)

* Add back the dartdoc options export to see if it causes meltdown on Windows

* Workaround for dart-lang/sdk#32923

* Sort imports with Optimize Imports
diff --git a/lib/dartdoc.dart b/lib/dartdoc.dart
index 37c6c78..b4c7ced 100644
--- a/lib/dartdoc.dart
+++ b/lib/dartdoc.dart
@@ -13,25 +13,25 @@
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:dartdoc/src/config.dart';
+import 'package:dartdoc/src/generator.dart';
+import 'package:dartdoc/src/html/html_generator.dart';
+import 'package:dartdoc/src/logging.dart';
+import 'package:dartdoc/src/model.dart';
+import 'package:dartdoc/src/package_meta.dart';
 import 'package:dartdoc/src/utils.dart';
+import 'package:dartdoc/src/warnings.dart';
 import 'package:html/dom.dart' show Element, Document;
 import 'package:html/parser.dart' show parse;
 import 'package:path/path.dart' as pathLib;
-
 import 'package:tuple/tuple.dart';
-import 'src/config.dart';
-import 'src/generator.dart';
-import 'src/html/html_generator.dart';
-import 'src/logging.dart';
-import 'src/model.dart';
-import 'src/package_meta.dart';
-import 'src/warnings.dart';
 
-export 'src/config.dart';
-export 'src/element_type.dart';
-export 'src/generator.dart';
-export 'src/model.dart';
-export 'src/package_meta.dart';
+export 'package:dartdoc/src/config.dart';
+export 'package:dartdoc/src/dartdoc_options.dart';
+export 'package:dartdoc/src/element_type.dart';
+export 'package:dartdoc/src/generator.dart';
+export 'package:dartdoc/src/model.dart';
+export 'package:dartdoc/src/package_meta.dart';
 
 const String name = 'dartdoc';
 // Update when pubspec version changes.
diff --git a/lib/src/dartdoc_options.dart b/lib/src/dartdoc_options.dart
index a91d856..2bc1c3a 100644
--- a/lib/src/dartdoc_options.dart
+++ b/lib/src/dartdoc_options.dart
@@ -19,11 +19,10 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:args/args.dart';
 import 'package:dartdoc/dartdoc.dart';
+import 'package:dartdoc/src/logging.dart';
 import 'package:path/path.dart' as pathLib;
 import 'package:yaml/yaml.dart';
 
-import 'logging.dart';
-
 /// Constants to help with type checking, because T is int and so forth
 /// don't work in Dart.
 const String _kStringVal = '';
diff --git a/lib/src/debug.dart b/lib/src/debug.dart
index 7d78d11..349aefc 100644
--- a/lib/src/debug.dart
+++ b/lib/src/debug.dart
@@ -4,7 +4,7 @@
 
 library debugger_helper;
 
-import "dart:developer" as dev;
+import 'dart:developer' as dev;
 
 get debugger =>
     const String.fromEnvironment('DEBUG') == null ? _nodebugger : dev.debugger;
diff --git a/lib/src/element_type.dart b/lib/src/element_type.dart
index ee9c10a..aa6c599 100644
--- a/lib/src/element_type.dart
+++ b/lib/src/element_type.dart
@@ -7,8 +7,7 @@
 
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
-
-import 'model.dart';
+import 'package:dartdoc/src/model.dart';
 
 /// Base class representing a type in Dartdoc.  It wraps a [DartType], and
 /// may link to a [ModelElement].
diff --git a/lib/src/generator.dart b/lib/src/generator.dart
index ac4bc7b..20dd037 100644
--- a/lib/src/generator.dart
+++ b/lib/src/generator.dart
@@ -8,7 +8,7 @@
 import 'dart:async' show Stream, Future;
 import 'dart:io' show File;
 
-import 'model.dart' show PackageGraph;
+import 'package:dartdoc/src/model.dart' show PackageGraph;
 
 /// An abstract class that defines a generator that generates documentation for
 /// a given package.
diff --git a/lib/src/html/html_generator.dart b/lib/src/html/html_generator.dart
index 4febcc2..2e3de78 100644
--- a/lib/src/html/html_generator.dart
+++ b/lib/src/html/html_generator.dart
@@ -7,14 +7,13 @@
 import 'dart:async' show Future, StreamController, Stream;
 import 'dart:io' show File;
 
+import 'package:dartdoc/src/generator.dart';
+import 'package:dartdoc/src/html/html_generator_instance.dart';
+import 'package:dartdoc/src/html/template_data.dart';
+import 'package:dartdoc/src/html/templates.dart';
+import 'package:dartdoc/src/model.dart';
 import 'package:path/path.dart' as pathLib;
 
-import '../generator.dart';
-import '../model.dart';
-import 'html_generator_instance.dart';
-import 'template_data.dart';
-import 'templates.dart';
-
 typedef String Renderer(String input);
 
 // Generation order for libraries:
diff --git a/lib/src/html/html_generator_instance.dart b/lib/src/html/html_generator_instance.dart
index 98e3782..c4bc561 100644
--- a/lib/src/html/html_generator_instance.dart
+++ b/lib/src/html/html_generator_instance.dart
@@ -7,19 +7,18 @@
 import 'dart:io' show File;
 
 import 'package:collection/collection.dart' show compareNatural;
+import 'package:dartdoc/src/html/html_generator.dart' show HtmlGeneratorOptions;
+import 'package:dartdoc/src/html/resource_loader.dart' as loader;
+import 'package:dartdoc/src/html/resources.g.dart' as resources;
+import 'package:dartdoc/src/html/template_data.dart';
+import 'package:dartdoc/src/html/templates.dart';
+import 'package:dartdoc/src/logging.dart';
+import 'package:dartdoc/src/model.dart';
 import 'package:dartdoc/src/model_utils.dart';
+import 'package:dartdoc/src/warnings.dart';
 import 'package:mustache4dart/mustache4dart.dart';
 import 'package:path/path.dart' as pathLib;
 
-import '../logging.dart';
-import '../model.dart';
-import '../warnings.dart';
-import 'html_generator.dart' show HtmlGeneratorOptions;
-import 'resource_loader.dart' as loader;
-import 'resources.g.dart' as resources;
-import 'template_data.dart';
-import 'templates.dart';
-
 typedef void FileWriter(String path, Object content, {bool allowOverwrite});
 
 class HtmlGeneratorInstance {
diff --git a/lib/src/html/template_data.dart b/lib/src/html/template_data.dart
index bdc7ae0..7014a5c 100644
--- a/lib/src/html/template_data.dart
+++ b/lib/src/html/template_data.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import '../model.dart';
+import 'package:dartdoc/src/model.dart';
 
 abstract class HtmlOptions {
   String get relCanonicalPrefix;
diff --git a/lib/src/html/templates.dart b/lib/src/html/templates.dart
index d2258c9..42189ef 100644
--- a/lib/src/html/templates.dart
+++ b/lib/src/html/templates.dart
@@ -7,10 +7,9 @@
 import 'dart:async' show Future;
 import 'dart:io' show File;
 
+import 'package:dartdoc/src/html/resource_loader.dart' as loader;
 import 'package:mustache4dart/mustache4dart.dart';
 
-import 'resource_loader.dart' as loader;
-
 const _partials = const <String>[
   'callable',
   'callable_multiline',
diff --git a/lib/src/markdown_processor.dart b/lib/src/markdown_processor.dart
index e97ce2a..b6dd03d 100644
--- a/lib/src/markdown_processor.dart
+++ b/lib/src/markdown_processor.dart
@@ -11,14 +11,13 @@
 import 'package:analyzer/dart/ast/ast.dart' hide TypeParameter;
 import 'package:analyzer/dart/element/element.dart';
 import 'package:dartdoc/src/element_type.dart';
+import 'package:dartdoc/src/model.dart';
 import 'package:dartdoc/src/model_utils.dart';
+import 'package:dartdoc/src/warnings.dart';
 import 'package:html/parser.dart' show parse;
 import 'package:markdown/markdown.dart' as md;
 import 'package:tuple/tuple.dart';
 
-import 'model.dart';
-import 'warnings.dart';
-
 const validHtmlTags = const [
   "a",
   "abbr",
diff --git a/lib/src/model.dart b/lib/src/model.dart
index a608919..60f601f 100644
--- a/lib/src/model.dart
+++ b/lib/src/model.dart
@@ -35,24 +35,23 @@
     show ExecutableMember, Member, ParameterMember;
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:collection/collection.dart';
+import 'package:dartdoc/src/config.dart';
 import 'package:dartdoc/src/dartdoc_options.dart';
+import 'package:dartdoc/src/element_type.dart';
 import 'package:dartdoc/src/io_utils.dart';
+import 'package:dartdoc/src/line_number_cache.dart';
+import 'package:dartdoc/src/logging.dart';
+import 'package:dartdoc/src/markdown_processor.dart' show Documentation;
+import 'package:dartdoc/src/model_utils.dart';
+import 'package:dartdoc/src/package_meta.dart' show PackageMeta, FileContents;
+import 'package:dartdoc/src/utils.dart';
+import 'package:dartdoc/src/warnings.dart';
 import 'package:front_end/src/byte_store/byte_store.dart';
 import 'package:front_end/src/base/performance_logger.dart';
 import 'package:path/path.dart' as pathLib;
 import 'package:tuple/tuple.dart';
 import 'package:package_config/discovery.dart' as package_config;
 
-import 'config.dart';
-import 'element_type.dart';
-import 'line_number_cache.dart';
-import 'logging.dart';
-import 'markdown_processor.dart' show Documentation;
-import 'model_utils.dart';
-import 'package_meta.dart' show PackageMeta, FileContents;
-import 'utils.dart';
-import 'warnings.dart';
-
 int byName(Nameable a, Nameable b) =>
     compareAsciiLowerCaseNatural(a.name, b.name);
 
@@ -923,9 +922,9 @@
     if (__inheritedElements == null) {
       __inheritedElements = [];
       Map<String, ExecutableElement> cmap =
-          library.inheritanceManager.getMembersInheritedFromClasses(element);
+          definingLibrary.inheritanceManager.getMembersInheritedFromClasses(element);
       Map<String, ExecutableElement> imap =
-          library.inheritanceManager.getMembersInheritedFromInterfaces(element);
+          definingLibrary.inheritanceManager.getMembersInheritedFromInterfaces(element);
       __inheritedElements.addAll(cmap.values);
       __inheritedElements
           .addAll(imap.values.where((e) => !cmap.containsKey(e.name)));
diff --git a/lib/src/warnings.dart b/lib/src/warnings.dart
index 5fc5d2f..58589ed 100644
--- a/lib/src/warnings.dart
+++ b/lib/src/warnings.dart
@@ -3,11 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/element/element.dart';
+import 'package:dartdoc/src/logging.dart';
 import 'package:dartdoc/src/model.dart';
 import 'package:tuple/tuple.dart';
 
-import 'logging.dart';
-
 class PackageWarningHelpText {
   final String warningName;
   final String shortHelp;