Pressure sources, Python backend, and Zeng's free surface method
* The elastic propagator now has pressure sources
(`source_amplitudes_p`/`source_locations_p`).
* All propagators now have a Python backend that can be selected using
the new `python_backend` parameter. They are generally slower than the
compiled backends (which remain the default), but are useful for
testing the compiled backends and also enable Deepwave to work on
devices that it does not have a compiled backend for.
* This version switches from using the W-AFDA free surface method to the
Improved Vacuum Method of Zeng et al. (2012) for the elastic
propagator, which enables the use of free surfaces with topography,
and also reduces the complexity of the elastic propagator's code. Some
small changes in the staggered grid were necessary to implement this
change, and it is also now necessary to set property model values to
zero at free surfaces to enable the free surface (rather than simply
setting the PML width to zero as before), which might require changes
in user code in some cases.