Make package mime strong clean

BUG=https://github.com/dart-lang/mime/issues/5
R=kevmoo@google.com

Review URL: https://codereview.chromium.org//2561953002 .
diff --git a/.analysis_options b/.analysis_options
new file mode 100644
index 0000000..a10d4c5
--- /dev/null
+++ b/.analysis_options
@@ -0,0 +1,2 @@
+analyzer:
+  strong-mode: true
diff --git a/lib/src/bound_multipart_stream.dart b/lib/src/bound_multipart_stream.dart
index 270503a..73811e7 100644
--- a/lib/src/bound_multipart_stream.dart
+++ b/lib/src/bound_multipart_stream.dart
@@ -81,13 +81,13 @@
 
   int _controllerState = _CONTROLLER_STATE_IDLE;
 
-  StreamController _controller;
+  StreamController<MimeMultipart> _controller;
 
   Stream<MimeMultipart> get stream => _controller.stream;
 
   StreamSubscription _subscription;
 
-  StreamController _multipartController;
+  StreamController<List<int>> _multipartController;
   Map<String, String> _headers;
 
   int _state = _START;
diff --git a/test/mime_multipart_transformer_test.dart b/test/mime_multipart_transformer_test.dart
index de1dc6d..76f6514 100644
--- a/test/mime_multipart_transformer_test.dart
+++ b/test/mime_multipart_transformer_test.dart
@@ -25,13 +25,13 @@
 void _runParseTest(String message, String boundary, TestMode mode,
     [List<Map> expectedHeaders, List expectedParts, bool expectError = false]) {
   Future testWrite(List<int> data, [int chunkSize = -1]) {
-    StreamController controller = new StreamController(sync: true);
+    var controller = new StreamController<List<int>>(sync: true);
 
     var stream =
         controller.stream.transform(new MimeMultipartTransformer(boundary));
     int i = 0;
     var completer = new Completer();
-    var futures = [];
+    var futures = <Future>[];
     stream.listen((multipart) {
       int part = i++;
       if (expectedHeaders != null) {
@@ -91,7 +91,7 @@
 
   Future testFirstPartOnly(List<int> data, [int chunkSize = -1]) {
     var completer = new Completer();
-    var controller = new StreamController(sync: true);
+    var controller = new StreamController<List<int>>(sync: true);
 
     var stream =
         controller.stream.transform(new MimeMultipartTransformer(boundary));
@@ -117,12 +117,12 @@
   Future testCompletePartAfterCancel(List<int> data, int parts,
       [int chunkSize = -1]) {
     var completer = new Completer();
-    var controller = new StreamController(sync: true);
+    var controller = new StreamController<List<int>>(sync: true);
     var stream =
         controller.stream.transform(new MimeMultipartTransformer(boundary));
     var subscription;
     int i = 0;
-    var futures = [];
+    var futures = <Future>[];
     subscription = stream.listen((multipart) {
       int partIndex = i;
 
diff --git a/test/mime_type_test.dart b/test/mime_type_test.dart
index 0ac32f5..87de96d 100644
--- a/test/mime_type_test.dart
+++ b/test/mime_type_test.dart
@@ -93,7 +93,7 @@
   });
 
   test('default magic number', () {
-    var actualMaxBytes = DEFAULT_MAGIC_NUMBERS.fold(0, (previous, magic) {
+    var actualMaxBytes = DEFAULT_MAGIC_NUMBERS.fold(0, (num previous, magic) {
       return math.max(previous, magic.numbers.length);
     });