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 the point. We don't know what implementation of Collection we will use, so to just give this possibility, it's better to depend on specification instead of implementation.