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
That's Ok but a whole different example.
What kind of collection would you use instead of ArrayCollection?
I don't see the point in abstracting this, since the contract is still fulfilled.
And we're throwing the KISS principles out the window.