[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        | TODO

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.
That's an interesting idea. I *might* be +1 to this. But I think an even better solution is if the security system were able to throw a clear exception if *no* voters voted on an attribute. So if you did a typo (e.g. `CREETE`), you'd see a clear message, rather than nobody voting and access being granted/denied 100% of the time based on your voting strategy