Rearrange implicits to speedup implicit search

Improves the compile times of client code using
`implicitly[WireFormat[...]]` and `implicitly[AvroSchema[...]`.

Exploits and optimization in implicit search: if an eligible
result has already been found, the compiler does not need to
evaluate if another candidate also satisfies the search if it
is less specific than the first result. "less specific" is the
parlance of static overload resolution. All else being equal based
on the type signatures, a method defined in a subclass of another
is more specific.