CLN: allow label memviews to be None
Saves some unnecessary memory allocations, plus moving towards making `rank_sorted_1d` easier to call. Also have done something similar for allowing `mask` to be None, but split that off this pr to keep it simpler.

Small comments, generally looks very nice thanks @mzeitlin11 