Add new checked Int/Long arithmetic macro.

This is the first pass at a new macro that rewrites Int/Long arithmetic
so that it checks for overflows. Then, at runtime, if an overflow is
detected, an `ArithmeticException` is thrown. In code where overflow is
a problem, this let's people write simple arithmetic expressions with
primitive Ints or Longs and still get overflow checking.

Currenty this covers overflow checks for `+`, `-`, `*`, `/`, and
`unary_-`.
Rename Safe to Checked and add static checked methods.
Use Checked functions vs. hard-coding overflow checks.

This switches to calling methods on the Checked object to perform the
checked arithmetic, rather than hard-coding the checks. This will be
nearly as fast and easily inline-able by the JVM, but keep bytecode
short. It also simplifies the AST transformer.

This also uses quasiquotes to simplify things as well.

We must widen the types first before performing a weak_<:<, so that is
fixed now too.

The local attrs are now reset after the rewrite too. This may be able to
be removed when SI-6711 is fixed.
Add tests for Checked arithmetic macros.
Add Checked.option and another test.
Move syntax macros from core to macros project.
Merge remote-tracking branch 'origin/master' into topic/polynomials
Replace most while loops with cfor.