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
Well, I fully disagree on that: I rather prefer KISS over D.
Specially in a library to be used by others.
Anyway, at least you'll agree with me that this code is fully understandable and simple.
Not on the first one, where you need to add two comments to make clear what you're doing.