`Base`: `macro cmd`: restrict argument to `String` (#57862)
Should make the sysimage less vulnerable to invalidation.
As far as I understand this change can't break any code, because:
* the macro definition requires `AbstractString`
* the way Julia macros work, the argument is either a literal or an
`Expr`
* `String` is the only `AbstractString` with literals
(cherry picked from commit 7acb2a6aa4299b38cddb52117b21dcdbd1c8268d)