PyUltraLight: a pseudo-spectral solver for ultralight dark matter dynamics | Synapse