text: Title: Warn when `distinct()` is used outside of aggregated functions
  Body: Discussed in #11518
  
  The alternatives could be:
  - at compile time: you could do it at compile time by passing a kw flag that "distinct" looks for , indicating the appropriate context. if flag not there, boom. would have to find a way to make it OK for str() compile -- https://github.com/sqlalchemy/sqlalchemy/discussions/11518#discussioncomment-9840468
  - at coercion time: does "distinct()" only go inside of a SQL function ? That's all we'd have to look for. we can put "distinct()" into a special coercion category based on the roles, like FunctionDistinctRole -- https://github.com/sqlalchemy/sqlalchemy/discussions/11518#discussioncomment-9841617
  
  the second option is likely better since it will give better feedback to the user (since it will happen at statement creation time, instead of when it will be compiled)