Re-specialize implicit Ops classes for 2.9.

In 2.10 we don't need to bother specializing Ops classes because their
instantiations will usually be replaced via macros. On 2.9 this won't
happen so we need to specialize them.

Unfortunately even when specialized there's still a cost. This means
that on 2.9 users have to decide between writing:

  def uglyFast[@spec A](x: A, y: A)(implicit r: Ring[A]) = r.plus(x, y)
  def neatSlow[@spec A: Ring](x: A, y: A) = x + y

Other minor cleanup is included in this commit as well.