Improve simplification of rationals in expressions

Summary:
Previously -1*(x+1/3) simplified to -0.333333333333+-1*x
Simplifying often turned rationals into floats, which
could make further simplification difficult. This also
could depend on which order expressions terms were
simplified in, causing problems for checking equality,
as in x287e38231dc2e4f8.

This commit attempts to preserve rationals during
simplification by making Rational::findGCD more intelligent
when applied to Rationals or Ints. This then improves
simplification and equality checking

This commit also modifies findGCD behaviour on floats, as
previous behaviour would factor out *10^-16 "factors"
which would often make an expression more complicated.

Test Plan:
 * See changes to test.html
 * Also tested "r^2 - (x - 1/3)^2 - (y - 2/5)^2" by hand
 * Also tested x287e38231dc2e4f8 by hand

Reviewers: justinjaffray, alex

Reviewed By: alex

Differential Revision: http://phabricator.khanacademy.org/D7435