[Security] fixed issue where authentication listeners clear unrelated tokens

This commit fixes an issue where authentication listeners clear all security tokens in case of authentication failure.
This behavior makes it impossible to combine certain authentication mechanisms, notably x509 with form-based login.
merged branch alcaeus/ticket_8226 (PR #8528)

This PR was merged into the 2.2 branch.

Discussion
----------

[Security] fixed issue where x509 authentication clears unrelated tokens

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8226
| License       | MIT
| Doc PR        | symfony/symfony-docs#2825
| Notes          | Replaces PR #8283

TODO:
- [x] Feedback on change to make sure security is not affected
- [x] Fix other authentication listeners (they suffer the same problem)
- [x] Write unit tests for bug and maybe a few listener classes as well

This pull request is the summary of the problem mentioned in the ticket above.
It only fixes the "disappearing token" problem for one authentication provider, not all. If acceptable, the change needs to be applied to all authentication listeners since they always clear all tokens from the security context.

Commits
-------

2317443 [Security] fixed issue where authentication listeners clear unrelated tokens