Previously the bounding box was calculated for each rotation,
even though the loop would early exit if the area exceeded the best
known area, this meant the areas of the bounds was checked for
each point too. This scaled poorly, close to O(n^2).
Replace this with simple logic that keeps track of the indices
at the bounds, advancing them forward for each rotation.
This is around ~140x faster for a hull with 10k points on my system.
Note that there is potential for other improvements although
the cases where this new method doesn't perform well are quite specific
and faster than checking all points, see code-comments for details.