Refactor of config handler

* Split into separate files
* Config\Row now extends ArrayObject
* Exception is thrown for unknown config properties

This is to support getting the raw array instead of having it cast to an object then back to an array (messes with the data types of the keys when using integer based constants as keys)
Use the new ArrayObject support of the config handler