This patch adds edge selection support for UV editing (refer T76545).
Developed as a part of GSoC 2021 project - UV Editor Improvements.
Previously, edge selection simply selected vertices, which resulted in
other edges between selected vertices to be also selected.
Selections in the UV editor always flushed down to vertices and this
caused multiple issues such as T76343, T78757 and T26676.
This patch fixes this by adding edge selection support for all UV
operators and support for flushing selections between vertices and
edges.
Changing UV select modes is now done using a separate operator, which
also handles select mode flushing and undo for UV select modes.
Drawing of selected UV edges is also updated to match the edit-mesh
display in the 3D viewport.
Notes on technical changes made in this patch:
* Restored the MLOOPUV_EDGESEL flag (removed in rB9fa29fe7652a).
* Added support for flushing selection between vertices and edges.
* Added edge support for UV selection checks
* Restored the BMLoopUV.select_edge boolean in the Python API
* New operator to handle updating UV select modes and flushing
TODOs added with this patch:
* Edge support for UV shortest path operator (currently this is done using vertex path logic and selection flushing)
* Change the default UV editor theme color instead of reducing contrast with edge-select.
* Proper UV element selections for Reveal Hidden operator