[OptionsResolver] Exception doesn't report the actual type used

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/11020
| License       | MIT
| Doc PR        | -

Note to moderator: Stopwatch tests are failing randomly here; not related to this PR!
For more info, see https://github.com/symfony/symfony/issues/10454

**UPDATE**:
- moved creation of printable value and type to separate methods for cleanliness
- improved printable value by making a difference between an empty string and NULL.
- restricted wrapping in quotes to only string values; further differentiating with other types.
- when printable type is an object, it's classname get's returned instead of just 'object'

**UPDATE 2**:
- applied feedback

**UPDATE 3**:
- applied more feedback
- squashed commits
calling private methods must use ``self::``, not ``static::``, otherwise it is broken when extending the class, by trying to call it on the child class