Add Math polyfill

This implements the new ES6 Math functions.

The implementation is based on V8 and MDN as well as the spec.

The tests are mostly just smoke tests. I'm not testing a lot of
edge cases.
The spec also has 
```
If any argument is −∞, the result is +∞.
If no argument is +∞ or −∞, and any argument is NaN, the result is NaN.
If all arguments are either +0 or −0, the result is +0.
```
The NaN one seems like a good one to support.