Allow PVSlicer to load a SpectralCube directly

The PVSlicer currently only works from a filename and doesn't take advantage of any of `spectral_cube`'s capabilities, including masking.  This PR allows it to use the cube directly.

It mostly works, but I have been getting bugs that I *think* are unrelated in gui testing
@astrofrog - if you have time for a quick review, the block above contains the meat of the code change: basically, try slicing a spectral cube if a cube has been provided, otherwise treat the cube `ndarray` and mask `ndarray` independently.