Fix protoc_plugin publish errors and warnings (#475)

- Set Dart SDK lower bound to 2.12.0-0
- Add missing dev dependencies
- Force tests to run in unsound mode until all sources are migrated
diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml
index 5334f2a..4565aae 100644
--- a/.github/workflows/dart.yml
+++ b/.github/workflows/dart.yml
@@ -238,14 +238,14 @@
       - job_003
       - job_004
   job_008:
-    name: "run_tests; linux; PKG: protoc_plugin; `./../tool/setup.sh`, `make protos`, `pub run test`"
+    name: "run_tests; linux; PKG: protoc_plugin; `./../tool/setup.sh`, `make protos`, `dart --no-sound-null-safety test`"
     runs-on: ubuntu-latest
     steps:
       - name: Cache Pub hosted dependencies
         uses: actions/cache@v2
         with:
           path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:protoc_plugin;commands:command_0-command_2-test"
+          key: "os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:protoc_plugin;commands:command_0-command_2-command_3"
           restore-keys: |
             os:ubuntu-latest;pub-cache-hosted;dart:dev;packages:protoc_plugin
             os:ubuntu-latest;pub-cache-hosted;dart:dev
@@ -269,10 +269,10 @@
         if: "always() && steps.protoc_plugin_pub_upgrade.conclusion == 'success'"
         working-directory: protoc_plugin
         run: make protos
-      - name: protoc_plugin; pub run test
+      - name: "protoc_plugin; dart --no-sound-null-safety test"
         if: "always() && steps.protoc_plugin_pub_upgrade.conclusion == 'success'"
         working-directory: protoc_plugin
-        run: pub run test
+        run: dart --no-sound-null-safety test
     needs:
       - job_001
       - job_002
diff --git a/protoc_plugin/mono_pkg.yaml b/protoc_plugin/mono_pkg.yaml
index 025ed0f..1cf4b77 100644
--- a/protoc_plugin/mono_pkg.yaml
+++ b/protoc_plugin/mono_pkg.yaml
@@ -17,5 +17,5 @@
     - group:
       - command: ./../tool/setup.sh
       - command: make protos
-      - test
+      - command: dart --no-sound-null-safety test
       dart: [dev]
diff --git a/protoc_plugin/pubspec.yaml b/protoc_plugin/pubspec.yaml
index dabca8b..6086298 100644
--- a/protoc_plugin/pubspec.yaml
+++ b/protoc_plugin/pubspec.yaml
@@ -4,7 +4,7 @@
 homepage: https://github.com/dart-lang/protobuf
 
 environment:
-  sdk: '>=2.11.0 <3.0.0'
+  sdk: '>=2.12.0-0 <3.0.0'
 
 dependencies:
   fixnum: ^1.0.0
@@ -15,6 +15,8 @@
 dev_dependencies:
   test: ^1.16.0
   pedantic: ^1.10.0
+  matcher: ^0.12.10
+  collection: ^1.15.0
 
 executables:
   protoc-gen-dart: protoc_plugin
diff --git a/tool/ci.sh b/tool/ci.sh
index f3ea52d..486b6e7 100755
--- a/tool/ci.sh
+++ b/tool/ci.sh
@@ -70,6 +70,10 @@
         echo 'make protos'
         make protos || EXIT_CODE=$?
         ;;
+      command_3)
+        echo 'dart --no-sound-null-safety test'
+        dart --no-sound-null-safety test || EXIT_CODE=$?
+        ;;
       dartanalyzer_0)
         echo 'dartanalyzer --fatal-warnings .'
         dartanalyzer --fatal-warnings . || EXIT_CODE=$?