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.
No, you can keep it, because branch master refers to Symfony 3.0 who requires php>=5.5 (see http://symfony.com/blog/symfony-3-0-the-roadmap).
Just annotate that the method is deprecated since version 3.0