[Security] add an AbstractVoter implementation

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/4257

The idea is to reduce boilerplate required to create custom Voter, doing most of the work for the developer and guiding him on the path by providing simple requirements via abstract methods that will be called by the AbstractVoter.

P.S. This is meant to be a [DX Initiative](https://github.com/symfony/symfony/issues?labels=DX&state=open) improvement.
Most of the time you don't need the token, so we're catering for the most common use case (most developers don't really understand - or need to understand - what a token is). But you're certainly right, and if you need access to the token, you should just skip extending this AbstractVoter and implement the `vote` method on your own class with whatever logic you need.