[ENH] Matrix exponential op and gradient (round 2!)

- Adds a new matrix exponential Op to slinalg.py, implemented with scipy.linalg.expm.
- Adds an op for the gradient of the matrix exponential.

This is a reworking of #2285. I fixed the math. It appears to work for general (non-necessarily hermetian) arguments.