[WIP] Fix to ppm chemical shift wrapper, better tests, CI integration.

But the binary that we're executing is `shiftx2.py`, not `python shiftx2.py`. This means that the `shiftx2.py` script has its own shebang line, which it sets itself.