isCredentialRejection
true only for CONNACK reason codes where retrying can never help — the broker examined our credentials or client identity and refused them.
A MqttException.ConnectionRejected can still carry a transient broker verdict (SERVER_BUSY, SERVER_UNAVAILABLE, CONNECTION_RATE_EXCEEDED), which must stay in the retry loop rather than stop the proxy with a "check credentials" dialog. Public so MqttManagerImpl in :core:data can phrase its user-facing error from the same classification.