Adjustment origin

We had cases when we want to apply some actions on order complete based on promotions applied (e.g. deduct gift card credits on order complete). The handiest way to do this without much effort and duplicating logic is to read amount form adjustments. But then we come to a problem of identifying the right adjustment.

Creating new `Adjustment` model which extends existing one and references back `Promotion` can be a life saver here. I think we can put it in promotion component with soft dependency on order component.

What do you think  @Sylius/core-team @pjedrzejewski?

cc @kayue 
What about calling [`PropertyAccess`](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/PropertyAccess/PropertyAccess.php)?

```php
use Symfony\Component\PropertyAccess\PropertyAccess;

protected $propertyName = 'id';

$accessor = PropertyAccess::createPropertyAccessor();
if ($accessor->isReadable($origin, $this->propertyName) {
    // ...
}

$originAware
    ->setOriginId($accessor->getValue($origin, $this->propertyName)
    ->setOriginType(get_class($origin))
;