Keep op_overload_impl as purely an implementation base class

- Interface behavior is inherited by whoever inherits off
  op_overload_impl, which now handles only the overloading bits.
Convert unit to overload
Add pred_overload for a type-safe way to add new predicate overloads
Convert ?root to overload
Fix a bug in ordering arguments in overloads

- The addition needs to be done in opposite direction from op's
  collect.  There, as here, we first recurse, meaning we act on last
  argument first.  But there that means that we pop last argument
  first, but here it means that we grab last argument from the
  bottom-most position.
Simplify overloads for ?find, ?match, ?empty over strings and sequences
Add comments for op_overload, op_yielding_overload, pred_overload; cleanup
Nits in documentation