Introduced an IFeature interface and the distinction of unique name and visible name.

In some applications (esp. with big feature models), it is necessary that the feature names
contain additional specifiers in order to be unique (e.g., namespaces). In the feature diagram,
these complicated unique names should not be displayed. Thus, we have to distinguish
between the unique name (stored in Feature.name and retrievable by getName()) and the
displayed name (accessible by getVisibleName()). There is also a helper function in the
interface which computes a unique name from a new visible name (which can be used e.g.
for checking feature names while the user renames it).