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.
Why not just use a C++-ish syntax like this:
```
fn op +(&self, rhs, &uint) -> uint;
```

or a Scala-ish notation like this:
```
fn +(&self, rhs, &uint) -> uint;
```

One could also imagine allowing any sequence of non-[A-Za-z0-9] characters (with exceptions to avoid conflicts) as an operator.