RFC: New approach to operators

Tried to reimplement as much of the operator overloading as possible using ``promote_type`` and ``convert`` methods. Ended up being a bit messier than I hoped, so not sure if this is an improvement over what we had before.