I wanted to deal with interfaces to avoid circular dependencies between classes.
Not sure if I've succeeded in this.

I actually think this class is not very useful, the idea was to give the option the responsibility to decide if it should be added to a container. The only use case we have so far is the UniqueOption and I cannot think of another use case. maybe it is enough to just add a method like ```boolean isUnique()```.