What's Changed
Near complete re-implementation of the halo catalogue class hierarchy (https://github.com/pynbody/pynbody/pull/763)
This is a _breaking change_, and as such the major version number of pynbody has increased. Regular users probably _don't_ want to install a v2 release at this early stage, and as such it has been flagged as a beta.
* Halo classes are no longer imported directly into the `pynbody.halo` namespace.
* Users may now request a particular halo finder, or list of halo finders, by passing a `priority` kwarg to `SimSnap.halos()`
* `HaloCatalogue.precalculate()` has been renamed to `HaloCatalogue.load_all()`
* Halo classes supporting child/parent relationships now expose a `.subhalos` property, in which the child halos are enumerated
* Behind the scenes, the mapping from `iords` to file offsets has been improved and unified across all `HaloCatalogue` subclasses
* `GrpCatalogue` has been renamed to `HaloNumberCatalogue` to better reflect its meaning
* `AHFCatalogue` no longer renumbers the halos using a one-based scheme by default. If AHF has written out halo numbers, these are used by default; if it has not written out halo numbers, a zero-based indexing is used. Users can pass `halo_numbers='v1'` to `halos()` to obtain the old behaviour
* The ability to run halo finders has been removed (it anyway only ever worked for AHF, and even then was a bit flakey)
**Full Changelog**: https://github.com/pynbody/pynbody/compare/v1.6.0...v2.0.0-beta