FlagEvent trait: Implement using macros
The explicit list of variant names, that needs to be kept in sync, and is a test failure semver break hazard, is now gone.
All the necessary code is now generated automatically, and cannot be wrong.
I want this because I find myself wanting to add a second implementation of FlagEvent, for another type.