Workaround for lack of symmetry in Math.sin.

Chrome 33 included some sin/cos optimisations, which unfortunately broke
our assumption that sin(-x) + sin(x) = 0 for all x.  More details here:

  https://code.google.com/p/v8/issues/detail?id=3006

This fix uses:

  sin(x) = sgn(x) * sin(abs(x))

and:

  cos(x) = cos(abs(x))

where it matters, which fixes area calculations for degenerate polygons
such as:

  {"type":"Polygon",
   "coordinates":[[[-0.0002,0.0001],[0.0002,0.0001],[-0.0002,0.0001]]]}

Fixes #1753.
Merge branch 'safe-sin'
Automatically rewritten for npm.