Add support for collections of settings classes

Includes complete unit tests
Add ResetCustom() method

Allows default values for collection properties
Add Readme

Also add explicit error for array properties