Update travis to run 2.4.0 and dev

Also bump the minimum Dart SDK
diff --git a/.travis.yml b/.travis.yml
index 12aac88..26f0d10 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,46 +1,76 @@
 language: dart
 
-# Gives more resources on Travis (8GB Ram, 2 CPUs).
-# Do not remove without verifying w/ Travis.
-sudo: required
-addons:
-  chrome: stable
-
-dart:
-  - dev
-
 # Build stages: https://docs.travis-ci.com/user/build-stages/.
 stages:
-  - presubmit
-  - build
-  - testing
+- presubmit
+- build
+- testing
 
 # 1. Run dartfmt, dartanalyzer, pub run test (VM).
 # 2. Then run a build.
 # 3. Then run tests compiled via dartdevc and dart2js.
 jobs:
-  include:
+    include:
     - stage: presubmit
-      script: ./tool/travis.sh dartfmt
-    - stage: presubmit
+      name: "2.4.0 analyzer"
       script: ./tool/travis.sh dartanalyzer
+      dart: 2.4.0
     - stage: presubmit
+      name: "2.4.0 vm test"
       script: ./tool/travis.sh vm_test
+      dart: 2.4.0
     - stage: build
+      name: "2.4.0 DDC build"
       script: ./tool/travis.sh dartdevc_build
+      dart: 2.4.0
     - stage: testing
+      name: "2.4.0 DDC test"
       script: ./tool/travis.sh dartdevc_test
+      dart: 2.4.0
     - stage: testing
+      name: "2.4.0 dart2js test"
       script: ./tool/travis.sh dart2js_test
+      dart: 2.4.0
     - stage: testing
+      name: "2.4.0 code coverage"
       script: ./tool/travis.sh coverage
+      dart: 2.4.0
+
+    - stage: presubmit
+      name: "dev dartfmt"
+      script: ./tool/travis.sh dartfmt
+      dart: dev
+    - stage: presubmit
+      name: "dev analyzer"
+      script: ./tool/travis.sh dartanalyzer
+      dart: dev
+    - stage: presubmit
+      name: "dev vm test"
+      script: ./tool/travis.sh vm_test
+      dart: dev
+    - stage: build
+      name: "dev DDC build"
+      script: ./tool/travis.sh dartdevc_build
+      dart: dev
+    - stage: testing
+      name: "dev DDC test"
+      script: ./tool/travis.sh dartdevc_test
+      dart: dev
+    - stage: testing
+      name: "dev dart2js test"
+      script: ./tool/travis.sh dart2js_test
+      dart: dev
+    - stage: testing
+      name: "dev code coverage"
+      script: ./tool/travis.sh coverage
+      dart: dev
 
 # Only building master means that we don't run two builds for each pull request.
 branches:
-  only: [master]
+    only: [master]
 
 # Incremental pub cache and builds.
 cache:
-  directories:
+    directories:
     - $HOME/.pub-cache
     - .dart_tool
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cfe10bc..9d485e1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@
   clients who use the Mock class in unconventional ways, such as overriding
   `noSuchMethod` on a class which extends Mock. To fix, or prepare such code,
   add a second parameter to such overriding `noSuchMethod` declaration.
+* Increase minimum Dart SDK to `2.4.0`.
 
 ## 4.1.1
 
diff --git a/pubspec.yaml b/pubspec.yaml
index e76d7aa..6edb482 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -9,7 +9,7 @@
 homepage: https://github.com/dart-lang/mockito
 
 environment:
-  sdk: '>=2.3.0 <3.0.0'
+  sdk: '>=2.4.0 <3.0.0'
 
 dependencies:
   analyzer: ^0.38.0