================
New Features
------------
- Added a new ``.to_sympy()`` classmethod for the ``Potential`` classes to
return a sympy expression and variables.
- Added a method, ``.to_galpy_orbit()``, to convert Gala ``Orbit`` instances to
Galpy ``Orbit`` objects.
- The ``NFWPotential`` can now be instantiated via a new classmethod:
``NFWPotential.from_M200_c()``, which accepts a virial mass and a
concentration.
- Added a fast way of computing the Staeckel focal length, ``Delta``, using
Gala potential classes, ``gala.dynamics.get_staeckel_fudge_delta``
Bug fixes
---------
- Fixed a bug with ``Potential`` classes ``.replace_units()`` so that classes
with dimensionless unit systems cannot be replaced with physical unit systems,
and vice versa.
- Implemented Hessian functions for most potentials.
- Fixed ``.to_latex()`` to properly return a latex representation of the
potential. This uses the new ``.to_sympy()`` method under the hood.
- Potential classes now validate that input positions have dimensionality that
matches what is expected for each potential.
API changes
-----------
- Changed the way new ``Potential`` classes are defined: they now rely on
defining class-level ``PotentialParameter`` objects, which reduces a
significant amount of boilerplate code in the built-in potentials.