Drop dependency on pkg:collection (#127)

Use Object.hashAll + Bump min SDK
diff --git a/.github/workflows/test-package.yml b/.github/workflows/test-package.yml
index cdc25d9..82602a8 100644
--- a/.github/workflows/test-package.yml
+++ b/.github/workflows/test-package.yml
@@ -47,7 +47,7 @@
       matrix:
         # Add macos-latest and/or windows-latest if relevant for this package.
         os: [ubuntu-latest]
-        sdk: [2.12.0, dev]
+        sdk: [2.14.0, dev]
     steps:
       - uses: actions/checkout@v2
       - uses: dart-lang/setup-dart@v1.0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fa4df33..f3b63c8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,7 @@
 ## 3.0.2-dev
 
+- Require Dart 2.14.0.
+
 ## 3.0.1
 
 * Fix doc links in README.
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 6d0480e..ff4a7e8 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,4 +1,11 @@
 include: package:lints/recommended.yaml
+
+analyzer:
+  language:
+    strict-casts: true
+    strict-inference: true
+    strict-raw-types: true
+
 linter:
   rules:
     - avoid_empty_else
diff --git a/example/example.dart b/example/example.dart
index 9686ad9..61a4bf7 100644
--- a/example/example.dart
+++ b/example/example.dart
@@ -9,7 +9,7 @@
 
 final _usage = 'Usage: dart hash.dart <md5|sha1|sha256> <input_filename>';
 
-Future main(List<String> args) async {
+Future<void> main(List<String> args) async {
   if (args.length != 2) {
     print(_usage);
     exitCode = 64; // Command was used incorrectly.
diff --git a/lib/src/digest.dart b/lib/src/digest.dart
index c6b7291..6503fed 100644
--- a/lib/src/digest.dart
+++ b/lib/src/digest.dart
@@ -4,8 +4,6 @@
 
 import 'dart:typed_data';
 
-import 'package:collection/collection.dart';
-
 /// A message digest as computed by a `Hash` or `HMAC` function.
 class Digest {
   /// The message digest as an array of bytes.
@@ -36,7 +34,7 @@
   }
 
   @override
-  int get hashCode => const ListEquality().hash(bytes);
+  int get hashCode => Object.hashAll(bytes);
 
   /// The message digest as a string of hexadecimal digits.
   @override
diff --git a/pubspec.yaml b/pubspec.yaml
index b00168b..7d413b7 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -4,10 +4,9 @@
 repository: https://github.com/dart-lang/crypto
 
 environment:
-  sdk: '>=2.12.0 <3.0.0'
+  sdk: '>=2.14.0 <3.0.0'
 
 dependencies:
-  collection: ^1.15.0
   typed_data: ^1.3.0
 
 dev_dependencies: