RFC: Scoped attributes for checked arithmetic

[Pretty][Pretty]

[Pretty]: https://github.com/glaebhoerl/rfcs/blob/scoped-attributes-for-checked-arithmetic/active/0000-scoped-attributes-for-checked-arithmetic.md
Just to clarify: the below loop would be allowed to print "hello" any number of times from 127 to infinity (inclusive), and may print "hello" a different number of times on different runs of the program, and may print "hedgehogs" but may not print "penguins"?

```
fn main() {
    let mut i: i8 = 1;

    while i > 0 {
        println!("hello");
        i = i + 1;
        if i != i { println!("penguins"); }
        if i + 1 != i + 1 { println!("hedgehogs"); }
    }
}
```

(Thus, for example, LLVM's `undef` could not be used to represent the value of `100i8 + 100`, because `undef` can be two different values in different usage points.  http://llvm.org/releases/3.4/docs/LangRef.html#undefined-values : "two ‘undef‘ operands are not necessarily the same. This can be surprising to people (and also matches C semantics) where they assume that “X^X” is always zero, even if X is undefined. This isn’t true for a number of reasons, but the short answer is that an ‘undef‘ “variable” can arbitrarily change its value over its “live range”.")