After thinking about this for a while, I doubt there is a reason for an `action_category` at all. We should be able to handle all three variations transparently, and we shouldn't need to know which one will be called. Only a single point actually doing the low-level invocation would have to know about those details, but that should be its own self-contained machinery.

I don't think any of the code below should have a need for `tag` nor `action_category`, instead it should merely call something like `detail::invoke_action(f, context, attribute)`.