Fixed Variant::setOption behavior

When setting a Collection of options to a Variant, each Option should be
added separately using the Variant::addOption() method, which will also
update the parent Product Attribute collection.

Product::removeAttribute() method was also added
Also, why do we expect a `Collection` parameter?
In fact we can rely on the parameter to be iterable and always do the same:
```php
public function setOptions($options)
{
    $this->options = new ArrayCollection();
    foreach ($options as $option) {
        $this->addOption($option);
    }

    return $this;
}
```