Remove redundant operator== and hashCode functions in card example.
It turns out that we aren't really using these. The identity logic is sufficient.

Also, add some asserts for a crash I had once but couldn't reproduce, in case that helps catch it next time.
diff --git a/packages/flutter/example/widgets/card_collection.dart b/packages/flutter/example/widgets/card_collection.dart
index 6099931..c3b7cb2 100644
--- a/packages/flutter/example/widgets/card_collection.dart
+++ b/packages/flutter/example/widgets/card_collection.dart
@@ -28,8 +28,6 @@
   AnimationPerformance performance;
   String get label => "Item $value";
   String get key => value.toString();
-  bool operator ==(other) => other is CardModel && other.value == value;
-  int get hashCode => 373 * 37 * value.hashCode;
 }
 
 class ShrinkingCard extends AnimatedComponent {
diff --git a/packages/flutter/lib/animation/timeline.dart b/packages/flutter/lib/animation/timeline.dart
index 680130d..1ea2039 100644
--- a/packages/flutter/lib/animation/timeline.dart
+++ b/packages/flutter/lib/animation/timeline.dart
@@ -54,11 +54,12 @@
     double end: 1.0
   }) {
     assert(!_animation.isAnimating);
-
+    assert(duration > Duration.ZERO);
     return _animation.start(new TweenSimulation(duration, begin, end));
   }
 
   Future animateTo(double target, { Duration duration }) {
+    assert(duration > Duration.ZERO);
     return _start(duration: duration, begin: value, end: target);
   }