rename AbstractPropertyGroup to AbstractPropertyCollection
replace property array getter with foreach
remove warn flag on visit methods
remove unnecessary destructors
rename obtainproperty to takeproperty
remove destructors; add ensureGroup to PropertyGroup and improve property look up
update PropertyGroup documentation
add documentation for AbstractProperty; remove AbstractArrayValue (unused)
add more documentation