[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'
```php
if (is_object($value)) {
    return get_class($value);
}

if (is_array($value))  {
    // ...
}
```

This is a question of coding standards. We don't use ``else`` in Symfony when the previous ``if`` returns making it unnecessary.