(feat): Support `refineEvent` in `registerAction`, and refactor 'selectchange' event to it. Different from the previous event generation mechanism, `refineEvent` is intented to create a user-friend event that differs from the original payload, while enabling feature `connect`, and being called at the last step of the "update" procedure to ensure the complete update of all models. If mutiple actions need to share one event name, `refineEvent` must be used. e.g., actions 'doxxx' 'undoxxx' 'togglexxx' share one event name 'xxxchanged'.