SConstruct: Add -Wno-deprecated for clang
circle_predicates: Add hash_reduce for HorizontalVertex
exact/Interval: Hack around clang's broken rounding mode behavior

Clang assumes that (x * -x) = -(x * x), which is incorrect for upwards
rounding.  This is a problem when computing the square of a singleton
interval when clang knows that the interval is singleton.  To fix the
problem, we multiply by 1-2ep to convert upwards to downwards rounding.
Interval: Use SSE if available

SSE makes the code slightly faster, but also lets us implement our own
negation routine (to hack around clang's incorrect assumptions) without
resulting in poor code.  This is because there is only one set of SSE
registers, so our custom version doesn't need to switch back and forth
between register types.