[DependencyInjection] Improve performance of the generated code.

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

I noticed a couple of ways the code generated for the compiler could be improved:

1) As mentioned in #3758 configurators can not be private (it's just ignored). The first commit in this pull changes that and allows them to be inlined. It it also creates better code if a configurator is used multiple times for one service (i.e. to both inject it and configure the same service) but this should be very rare.

Note that this patch generates different code on 5.4 to prevent a call to call_user_func. If that's not desired I'll revert that part.

2) When using static methods for either the factory or as the configurator we can avoid using call_user_func and directly use the class:method notation. This is done by the second commit.

TODO:
- [X] add a unit test covering an inlined configurator