Move the `ME_SHARP` flag for mesh edges to a generic boolean attribute. This will help allow changing mesh edges to just a pair of integers, giving performance improvements. In the future it could also give benefits for normal calculation, which could more easily check if all or no edges are marked sharp, which is helpful considering the plans in T93551. The attribute is generally only allocated when it's necessary. When leaving edit mode, it will only be created if an edge is marked sharp. The data can be edited with geometry nodes just like a regular edge domain boolean attribute. The attribute is named `sharp_edge`, aiming to reflect the similar `select_edge` naming and to allow a future `sharp_face` name in a separate commit. Ref T95966 Differential Revision: https://developer.blender.org/D16921