Refactor package structure

* Move .base.def and .extra.def to .def.base/.def.extra.
* Split .extra and .def.extra into different subpackages (func, prop,
...).
Beautify most equals() methods by adding more line breaks
Improve collection/map type persistence

* Collection types (apart from the default ArrayList) are now serialized
along persistent collections for making the collection type recoverable
after deserialization.
* The default map type (HashMap) is no longer explicitely stored.
Replaced old Persistent annotation with new Persistable interface

The new interface allows the persistence of a feature being dynamically
changed during runtime.
Add NonPersistent annotation for non-persistent property values

The new annotation can be used to mark objects which should not be
serialized when they are stored inside a persistent property or a
persistent collection.
Small clean-up
Update changelog