The main idea of this patch is to create a generic snap gizmo that can be used in different tools.
In this case, the ruler was the chosen tool.
- The Gizmo can be configured initially by the following properties -> "snap_elements_force", "active_on", "prev_point"
- The following properties can be read as return -> "location", "normal", "snap_elem_index"
- This property can be linked to another (tool_setting.snap_elements) -> "snap_elements"
- 3 extra utilities have been created -> ED_gizmotypes_snap_3d_draw_util, ED_gizmotypes_snap_3d_context_get, ED_gizmotypes_snap_3d_update.