Executor override support in AbstractFunctionDefinition

Add: The AbstractFunctionDefinition class supports executors in variants that override other executors with the same name in supervariants. "Removing" executors just in subvariants is also possible by overriding the executor of the supervariant with an empty executor.
Property executor fix & property executor variants

Fix: The property's getter/setter executors and the collection property's getter/adder/remover executors are now actually handled.
Add: The PropertyDefinition and CollectionPropertyDefinition interfaces support adding getter/setter/adder/remover executors with a variant for applying inheritance.
Change parameter order of add/remove(X)Executor() methods

Fix: In order to logically conform the new function inheritance feature (overridable function executors), the parameter order of every add(X)Executor() or remove(X)Executor() method is changed to (name, variant, executor) instead of the old (variant, name, executor).
Fix javadoc issue in CollectionPropertyAccessorFactory

Fix: A small javadoc issue (method link) in the CollectionPropertyAccessorFactory class.
Reduce lock system to function executors

Remove: The parts of the lock system that didn't belong to function executors. The old system for every feature wasn't really compatible with the new property system and technically just added complexity instead of benefit.
Update changelog
Add GetterSupplier as property abstraction

Add: The interface GetterSupplier abstracts the principle of a get() method and is extended by every property. It can be used whenever the type of property isn't known.
Remove lock, limit and delay system

Remove: The lock system for function executors.
Remove: The Limit and Delay annotations for update functions. However, that functionality should be implemented by specialized features.
Remove: The isExecutorInvocable() method in the DefaultFunctionInvocation class.
Remove: The invocation counter in the FunctionInvocation interface.
Update changelog
Finish Abstract(Collection)Property modifier variant support

Fix: The getter/setter/adder/remover functions of both AbstractProperties and AbstractCollectionProperties finally support inheritance through variants.
Collection property clones supplied collection

Fix: The abstract collection property clones the collection that is supplied for usage in order to prevent making changes to the original collection. That way, the original collection which is likely stored in a definition object and used for every new property object isn't modified.
Listify (nearly) everything

Fix: Replace most of the sets with ĺists because sets (especially HashSets) are not safe for modifiable objects.
Update changelog
ChildFeatureHolders provide parent type class

Add: ChildFeatureHolders provide a class that represents the parent type for more type-safety. (Collection) properties can use that class to do checks when they are auto-assigning parents to child feature holders.
Javadoc fixes and PropertyPersistenceTest improvement

Fix: Some small javadoc issues.
Fix: The property persistence test no longer formats the output.
Add general property initial value cloning

Add: The AbstractProperty clones the initial value in order to prevent changes to the original object.
Fix. The AbstractCollectionProperty uses ObjectUtils to call the clone
method.
Update changelog
JAXB support for collection properties

Fix: Collection properties are properly recognized by JAXB.
Add ObjectAdapter array support

Add: The ObjectAdapter class (and all properties that use it) supports proper array persistence.
AbstractProperty can compare arrays

Fix: The AbstractProperty base class is now able to properly compare arrays in the equals() method.