overdraw: Significantly improve overdraw/vcache balance
overdraw: Significantly improve overdraw/vcache balance

There were several issues in the existing soft boundary generation
algorithm that, when combined, resulted in significantly worse vcache
results compared to the allowed thresholds. In particular:

- For meshes with many clusters, sometimes the total ACMR would be
pretty low (e.g. 1.0) because there would be a combination of clusters
with good ACMR (e.g. 0.6) and bad (e.g. 1.5). The existing algorithm
would subdivide all good clusters to reach 1.0, resulting in significant
degradation of overall ACMR. This change fixes this by applying
threshold to each cluster individually.

- Whenever the cluster was split, the last sub-cluster would have
ACMR worse than the target one; in some cases we'd leave off one-two
triangles at the end even if we started with a cluster with good ACMR.
This change fixes this by discarding the last sub-cluster.

- The logic for setting the cluster boundary was slightly off - we would
split the sub-cluster before the last triangle of the last one, which
resulted in slight overestimation of the target ACMR. This change fixes
this off-by-one error.

As a result, instead of producing meshes with much worse ACMR compared
to what was expected for some inputs, the algorithm is now - in practice
- mostly either reaching the goal or erring on the side of higher ACMR
but fewer clusters, which is a good tradeoff since the user can always
increase the threshold if necessary.

zeux/meshoptimizer,zeux/meshoptimizer,zeux/meshoptimizer