Reads a run config YAML (see inst/configs/), resolves paths relative to
paths.project_dir, and validates the parts that are cheap to check before a
run rather than midway through one: the active species exists in the catalog,
each species resolves to an abundance column, thresholds are well-formed, and
the declared columns actually exist in the zooplankton CSV.