[Serializer] Added PropertyNormalizer, a new normalizer that maps an object's properties to an array
[OptionsResolver] Added a light-weight, low-level API for basic option resolving
feature #11716 [OptionsResolver] Added a light-weight, low-level API for basic option resolving (webmozart)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[OptionsResolver] Added a light-weight, low-level API for basic option resolving

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #11705
| License       | MIT
| Doc PR        | symfony/symfony-docs#4159

See [the updated documentation](https://github.com/webmozart/symfony-docs/blob/issue11705/components/options_resolver.rst) for details on the usage of the simple API.

The most important motivation for this change is DX and speed. The basic features of the component should be easily usable in a wide variety of use cases without impacting performance.

For DX reasons, I added the static methods to the `Options` class, which makes the code concise and easy to read and understand:

```php
use Symfony\Component\OptionsResolver\Options;

$options = Options::validateRequired($options, 'format');

$options = Options::validateTypes($options, array(
    'format' => array('string', 'int'),
    'calendar' => 'int',
));

$options = Options::validateValues($options, array(
    'calendar' => array(
        \IntlDateFormatter::GREGORIAN,
        \IntlDateFormatter::TRADITIONAL,
    ),
));

$options = Options::resolve($options, array(
    'format' => null,
    'calendar' => \IntlDateFormatter::GREGORIAN,
));
```

If you need to distribute the option configuration, this PR also extracts the configuration part of the `OptionsResolver` class into a new class `OptionsConfig`, which can be passed around. When the configuration is complete, pass the config object to `Options::resolve()` as second argument:

```php
$config = new OptionsConfig();

$config->setDefaults(array(
    'format' => \IntlDateFormatter::MEDIUM,
    'calendar' => \IntlDateFormatter::GREGORIAN,
));

$options = Options::resolve($options, $config);
```

Consequently - since `OptionsResolver` extends `OptionsConfig` - the two following statements now become identical:

```php
$options = $resolver->resolve($options);
$options = Options::resolve($options, $resolver);
```

Commits
-------

9066025 [OptionsResolver] Added a light-weight, low-level API for basic option resolving
[Debug] Symfony debug extension
[Debug] a README for the debug extension
[VarDumper] algo to clone any PHP variable to a breadth-first queue
[VarDumper] symfony_debug ext. fast and memory efficient cloning algo
[VarDumper] add casters for per class/resource custom state extraction
[VarDumper] casters for exceptions representation
[VarDumper] casters for SPL data structures
[VarDumper] casters for PDO related objects
[VarDumper] casters for Doctrine objects
[VarDumper] casters for DOM objects
[VarDumper] interface for dumping collected variables
[VarDumper] CLI dedicated dumper and related abstract
[VarDumper] HTML variant of the CLI dumper
[VarDumper] tests for CliDumper
[VarDumper] tests for HtmlDumper
[VarDumper] README, LICENSE and composer.json
fixed typo