Implemented convenience functions for applying ruby core Math module functions to NMatrix objects elementwise

I was getting tired of doing, e.g.:
```
a = N[1,2]
b = a.map { |e| Math.log(e) }
```
I added the functions in the Math module that return a single value as class functions of NMatrix, so it's now possible to do:
```
N.log(a)
N.sin(a)
N.exp(a)
```
etc.

I had all these functions preserve dtype, so integer results are rounded, etc.

Specs are for dense matrices only, since doing this kind of thing would likely produce non-default values for sparse ones and rather defeat the purpose.  If there's a reason that I'm missing to use these on non-dense matrices, though, I can go back and add specs for that.