Ad-hoc operator overloading

[Rendered](https://github.com/SiegeLord/rfcs/blob/ad_hoc_operators/active/0000-ad-hoc-operators.md).

This RFC is in many ways an alternative to https://github.com/rust-lang/rfcs/pull/392.