reflection: refactor `@assume_effects` implementation (#52399)
I am working on implementing a support for callsite `@assume_effects`
annotation, and this update is part of the preparation for that goal.
Along this, I've modified the API from `pushmeta!(::Expr, ::Symbol,
args...)` to `pushmeta!(::Expr, ::Union{Symbol,Expr})`. This change
isn't breaking as long as the `args` are empty, which is the case for
most use cases (actually there is only one usage of `pushmeta!` with
non-empty `args` within Julia base). I've verified on JuliaHub, and
there don't appear to be any packages using `pushmeta!` with non-empty
`args`, so there shouldn't be any (big) issues.