simplify: Improve seam classification by using a wedge table
simplify: Improve seam classification by using a wedge table

Before this change, seam vertices could be sometimes classified as
locked. This happened when one of the seam edges went towards a vertex
that was on several seam loops and had >2 wedges; as a result, the logic
that tried to see if the half-edge has a pair couldn't find the matching
half-edge because it didn't know about all wedges.

This wasn't possible to fix without restructuring the tables because
reverse_remap just didn't have enough information. Additionally,
reverse_remap was somewhat confusing - all accesses to that table had to
go through remap[] table since all entries for "secondary" vertices
weren't actually correct.

Instead, this change replaces the table with a wedge table where each
vertex points to the vertex for the next wedge that shares the same
remap vertex (i.e. same position). The entries for each vertex form a
loop - you can iterate through all wedges for each vertex, see
findWedgeEdge.

This allows us to do a more precise seam detection since even if the
half-edge goes into a complex vertex, we can always find the edge pair.
As a result, we get fewer locked vertices for complex meshes which
results in better simplification.

As a result, classification can get slightly more expensive since we
have to try harder to find the seam pair.

zeux/meshoptimizer,zeux/meshoptimizer,zeux/meshoptimizer