[DependencyInjection] Add Generic CompilerPass to collect tagged services

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

I often see developers either not knowing, or having difficulties with implementing tagged services and their collection. The problem is generically solvable and we should so, because it tremendously helps developers implement decoupled and reusable code.

Usage of the CompilerPass is described in the doc block class comment. I can add this as a documentation as well.