I agree, IndexedValue should be moved at some point.  Does it fit in `quiver.core`?  Otherwise `quiver.base` sounds good.  Also, I would prefer a more generic interface like:

```dart
class Pair<K, V> {
  K key;
  V value;
}
```

or

```dart
class Tuple<X1, X2> {
  X1 x1;
  X2 x2;
}
```

which could be reused for Maps:

```dart
Iterable<Pair> pairs(Map map);
Map fromPairs(Iterable<Pair>);
Pair<int, dynamic> enumerate(Iterable);
Stream<Pair<int, dynamic>> enumerateStream(Stream);
```

What do you think?