Work to rationalize the situation with implicits.

We're getting to the point where I worry that we may be collapsing
under the weight of our implicits. Unfortunately, we need to use
these to make the built-in types and the user-defined types have
similar methods and semantics. But I fear that the current strategy
is leading to "full recompiles on any change" as well as increasingly
confusing interactions between moving parts.

That said, things are mostly working in this state. So we can continue
to patch problems as they come for awhile yet.