Add factory system

Add: A dynamic factory system for creating parameterized factories.
Add jMock dependency

Add: A maven dependency for jMock in order to allow efficient mocking tests.
Add general storage system

Add a system that is used for generalizing object storage. It will
replace the old template method pattern for Property/CollectionProperty
soon.
Rework property system

* Remove the need for many subclasses of Abstract(Collection)Property by
using the new storage system.
* Rename the base implementations for properties to
Default(Collection)Property.
* Improve the test coverage on the base Default(Collection)Property
classes.
Improve some javadoc
Add some additional input value checks

Add some additional validation checks for input values on methods and
constructors.