Remove abstract class and use Interface+Trait

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | yes
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Why do we need to close the inheritance if we can use our existing interface/trait? This PR will provide trait+interface instead of abstract class, that will allow to improve inheritance and allow to the class to extends another with real advantage if it needed.
It could not be depracted at version 2.7 because Symfony till support php 5.3 in branch 2.x