simplify: Split fillEdgeCollapses into pick & rank
simplify: Split fillEdgeCollapses into pick & rank

We now have two separate functions - pickEdgeCollapses that selects the
viable collapses based on topological restrictions, and rankEdgeCollapses
that assigns an error to each collapse.

For now, rankEdgeCollapses makes an assumption that eliminating an
unpredictable branch for bidirectional edges is more valuable than
saving floating point ALU cycles on computing extra errors. It seems
like this change doesn't really affect performance one way or another;
if later we determine that unidirectional collapses can be very frequent
we'll rework this code.

zeux/meshoptimizer,zeux/meshoptimizer,zeux/meshoptimizer