Fix `mixer_remove_event` identity matching
Fix `mixer_remove_event` identity matching

This allows a single callback function to be used with multiple contexts.

Previously, if the same callback was added multiple times with different contexts, attempting to remove a specific event context would only remove the first entry in the event list, which may not actually be the entry associated with the context provided.

This is especially problematic in C++ where:
1. GCC's nested function syntax is not available
2. C++ Lambdas require lifecycle management for asynchronous callbacks
3. Trampolines are the easiest way to interact with C-style APIs

This is not an API change, but is definitely a behavior change that may cause breakage, however I consider the old behavior to be a bug. The API implies that the identifying values of an event should be both the callback and the context, otherwise there would be no point in providing the context to `mixer_remove_event`.

sp1187/libdragon,DragonMinded/libdragon,sp1187/libdragon,DragonMinded/libdragon,DragonMinded/libdragon,sp1187/libdragon