structured and more maintainable. The old algorithm could leave the mesh in an inconsistent state during recursive calls, making it quite fragile. The new algorithm keeps the mesh in a consistent state, and should be more robust. This commit fixes the issues EdgeSplit was having with non-manifold meshes (bug #4946, also reported by several other people). EdgeSplit now works correctly with all the test files I have. This commit also fixes the BLI_ghash_remove function to correctly decrement gh->nentries (the number of entries in the hashtable) on a successful removal.