Enable and fix a number of lints (dart-lang/markdown#166)

diff --git a/pkgs/markdown/.analysis_options b/pkgs/markdown/analysis_options.yaml
similarity index 70%
rename from pkgs/markdown/.analysis_options
rename to pkgs/markdown/analysis_options.yaml
index 37b2ae0..0eb0eaa 100644
--- a/pkgs/markdown/.analysis_options
+++ b/pkgs/markdown/analysis_options.yaml
@@ -1,37 +1,45 @@
 analyzer:
-  strong-mode: true
+ strong-mode: true
+ errors:
+   unused_element: error
+   unused_import: error
+   unused_local_variable: error
+   dead_code: error
 linter:
   rules:
-    - always_declare_return_types
+    #- always_declare_return_types
     #- always_specify_types
     #- annotate_overrides
     #- avoid_as
     - avoid_empty_else
     - avoid_init_to_null
-    - avoid_return_types_on_setters
+    - avoid_null_checks_in_equality_operators
+    #- avoid_return_types_on_setters
     - await_only_futures
     - camel_case_types
     - cancel_subscriptions
-    - close_sinks
-    #- comment_references
+    #- close_sinks
+    - comment_references
     - constant_identifier_names
     - control_flow_in_finally
+    - directives_ordering
     - empty_catches
     - empty_constructor_bodies
     - empty_statements
     - hash_and_equals
-    #- implementation_imports
+    - implementation_imports
     - iterable_contains_unrelated_type
     - library_names
     - library_prefixes
     - list_remove_unrelated_type
     #- non_constant_identifier_names
     #- one_member_abstracts
-    #- only_throw_errors
+    - only_throw_errors
     - overridden_fields
     - package_api_docs
     - package_names
     - package_prefixed_library_names
+    - prefer_final_fields
     - prefer_is_not_empty
     #- public_member_api_docs
     - slash_for_doc_comments
@@ -43,7 +51,7 @@
     #- type_annotate_public_apis
     - type_init_formals
     #- unawaited_futures
-    #- unnecessary_brace_in_string_interp
+    - unnecessary_brace_in_string_interp
     #- unnecessary_getters_setters
     - unrelated_type_equality_checks
     - valid_regexps
diff --git a/pkgs/markdown/lib/markdown.dart b/pkgs/markdown/lib/markdown.dart
index 9f4a11d..f4faacf 100644
--- a/pkgs/markdown/lib/markdown.dart
+++ b/pkgs/markdown/lib/markdown.dart
@@ -11,5 +11,5 @@
 export 'src/extension_set.dart';
 export 'src/html_renderer.dart';
 export 'src/inline_parser.dart';
-export 'src/version.dart';
 export 'src/util.dart' show escapeHtml;
+export 'src/version.dart';
diff --git a/pkgs/markdown/lib/src/block_parser.dart b/pkgs/markdown/lib/src/block_parser.dart
index c6589d9..80a98d0 100644
--- a/pkgs/markdown/lib/src/block_parser.dart
+++ b/pkgs/markdown/lib/src/block_parser.dart
@@ -528,18 +528,17 @@
   const OtherTagBlockHtmlSyntax();
 }
 
-/// A BlockHtmlSyntax that has a specific [endPattern].
+/// A BlockHtmlSyntax that has a specific `endPattern`.
 ///
 /// In practice this means that the syntax dominates; it is allowed to eat
-/// many lines, including blank lines, before matching its [endPattern].
+/// many lines, including blank lines, before matching its `endPattern`.
 class LongBlockHtmlSyntax extends BlockHtmlSyntax {
-  RegExp _pattern;
-  RegExp _endPattern;
+  final RegExp _pattern;
+  final RegExp _endPattern;
 
-  LongBlockHtmlSyntax(pattern, endPattern) {
-    _pattern = new RegExp(pattern);
-    _endPattern = new RegExp(endPattern);
-  }
+  LongBlockHtmlSyntax(pattern, endPattern)
+      : _pattern = new RegExp(pattern),
+        _endPattern = new RegExp(endPattern);
 
   RegExp get pattern => _pattern;
 
diff --git a/pkgs/markdown/lib/src/inline_parser.dart b/pkgs/markdown/lib/src/inline_parser.dart
index a1ebd92..2f4e243 100644
--- a/pkgs/markdown/lib/src/inline_parser.dart
+++ b/pkgs/markdown/lib/src/inline_parser.dart
@@ -431,7 +431,7 @@
   //
   // This conforms to the delimiters of inline code, both in Markdown.pl, and
   // CommonMark.
-  static String _pattern = r'(`+(?!`))((?:.|\n)*?[^`])\1(?!`)';
+  static final String _pattern = r'(`+(?!`))((?:.|\n)*?[^`])\1(?!`)';
 
   CodeSyntax() : super(_pattern);
 
diff --git a/pkgs/markdown/tool/common_mark_stats.dart b/pkgs/markdown/tool/common_mark_stats.dart
index d76003c..d380237 100644
--- a/pkgs/markdown/tool/common_mark_stats.dart
+++ b/pkgs/markdown/tool/common_mark_stats.dart
@@ -144,7 +144,7 @@
       case CompareLevel.loose:
         return 'loose';
       default:
-        throw 'huh?';
+        throw new ArgumentError("`$obj` is unknown.");
     }
   }
   if (obj is Map) {