Accuracy of sinh and complex cos/sin

The `sin` and `cos` function for complex arguments, and the `sinh` function for real arguments, are inaccurate when the inputs are very small. This is because `Math.exp(x) - Math.exp(-x)` returns zero for small x, instead of the more accurate `2x`.

This patch replaces `sinh` by a Taylor expansion when the input is small, which increases accuracy.
You fail this test case.
```
1) cos should return the cosine of a number:

AssertionError: {"re":1,"im":-1.0000000000000001e-100} deepEqual {"re":1,"im":-1e-100}
```
I think you should assert to the value you get (which is `1 - 1.0000000000000001e-100i`), and comment that the true value is transcendental.