bl00mbox channel callbacks
This allows users to attach callbacks to bl00mbox channels to run in the background.
Further background task functionality is planned but this one was the low hanging fruit as the intended use case is to modify the channel based on new inputs, so no lock/ownership concept is needed (compare to setting LEDs for example) and the mixer already allows bypassing them simply by muting the channel in the system mixer.
It depends on implementation details of the garbage collector since we have to play peek-a-boo with reachability in order to not leak channel memory, if a future GC returns control after marking but before sweeping this will result in a use-after-free, but we see no reason for such a change (sweeping is fast, little is gained by making it incremental) so we think it's fine.
We also took the opportunity to rewrite most of the backend, it's a bunch faster now and plugins can be garbage collected, which is technically a breaking change but it should be fine probably.