Rework mixins to avoid extending non-Object. (#116)

The ability for a class extending non-Object to be used as a mixin
will be removed from Dart in an upcoming release.  In general, code
taking advantage of this ability can be fixed in two ways:

- The class can be changed to use the new "mixin" syntax (see
  https://github.com/dart-lang/language/blob/master/working/0006.%20Super-invocations%20in%20mixins/0007.%20Mixin%20declarations/lrhn-strawman.md).

- If the class contains no references to "super", the base class can
  simply be moved into the "implements" clause (e.g. "abstract class M
  extends A implements B {...}" can be changed to "abstract class M
  implements A, B {...}"

This CL adopts the second strategy, since it's feasible (the classes
in question do not use "super") and since it's backwards compatible to
older versions of Dart.
3 files changed