Add ShortestAngleDiffWithLimits function; handle zero case for Sign* variants