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.
Merge pull request #139 from jamesthompson/topic/polynomials

Split polynomials into separate files and added Special Polynomials instances
Increase test coverage for Polynomial.

This commit generalizes the ScalaCheck tests, making it easy to run
the tests for dense and sparse polynomials of any type A.

For now, we're testing Rational and Complex[Rational]. There seem to
be some issues which prevent BigDecimal from working, although in
principle it should work.
improve toString
Some basic polynomial clean up.

This commit does a bunch of small house-keeping tasks:

1. Renames PolyTerm.scala to Term.scala
2. Moves Order[Term[C]] into Term's companion
3. Rewrites some sparse/dense methods to more efficient forms
4. Adds nth() method to get nth coefficient
5. Improve equals efficiency
6. Unify equals/toString

These changes should help improve the performance of many dependent
methods (although unfortunately they probably won't speed up many of
the places we're losing to commons math).
Move syntax macros from core to macros project.
Merge remote-tracking branch 'origin/master' into topic/polynomials
Replace most while loops with cfor.
Merge pull request #1 from non/topic/polynomials

Topic/polynomials