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.
Without committing to supporting this RFC, `fn (+)(lhs: T, rhs: U) -> V` might be easier to parse.