===================
- Add specialized integration method to determine surfaces of sections of orbits and
add Orbit.SOS and Orbit.plotSOS methods to compute and plot the surface of section
of an orbit.
- Also added a brute-force method to determine surfaces of sections and plotting them
for force fields for which the specialized method does not work (e.g., orbits in a
non-inertial bar frame). Methods Orbit.bruteSOS and Orbit.plotBruteSOS have similar
interfaces as Orbit.SOS and Orbit.plotSOS.
- Added a method, dMdE, to calculate the differential energy distribution of
spherical distribution functions.
- Added general support for DissipativeForce instances in 2D.
- Implemented NonInertialFrameForce in 2D.
- Started using black for code formatting.
- Allow potentials' density and surface density to be plotted on physical axes.
- Don't fail when writing a (fixed) configuration file, instead just warn.
- Removed the deprecated galpy.util.bovy_coords, galpy.util.bovy_plot, and
galpy.util.bovy_conversion modules. These were replaced by galpy.util.coords,
galpy.util.plot, and galpy.util.conversion in v1.7.
- Removed the deprecated phiforce method from potentials and the accompanying
evaluatephiforces and evaluateplanarphiforces potential functions. These were replaced
by phitorque, evaluatephitorques, and evaluateplanarphitorques in v1.8.0.
- Switched to using Python 3.11 as the default Python version in the test suite.