Reworked search catchment.

Speed and algorithm improvements:
- Tracks and saves path - either in or out of catchment.
- If new path encounters a point that is out (-1) or in (1), the paths are joined and we break out of the search loop
- Still tracks path length (cells / count_ds) and returns sorted arrays for make_uh computations.

This is likely to have significant speed up implications for large basins.