Add default property settings for "hidden" and "persistent"

Each uninitialized (collection) property now has default settings for
the attributes "hidden" and "persistent". That is important because only
special cases, which require these attributes to be set differently,
should need to be initialized after unmarshalling.
Add proper feature hiding status update on unmarshalling

When an unmarshalled feature is added to its feature holder, the hiding
state of the feature is now automatically updated using the default
hiding flag of the feature.
Add constants for the default hiding and persistence flag values
Replace factory system with a more shorter and type-safe one

The new factory system provides factories for interfaces instead of
constructing objects by itself.
Very small clean-up