Clean up the implicit operator situation.

It turns out that having multiple implicit conversions that provide
(different) versions of operators like "-" is dicey at best. This
commit unifies all the overloads for a given operator into a single
implicit, so that it can be applied first and then the correct
overload will be chosen.

This change allows us to support Int/Double literals via spire.algebra
type classes when the relevant conversions are available (Ring for Int
and ConvertableTo for Double).

Closes #46.