+ Added a SemanticError exception class to signal when more than one property have the same name in a scope.
+ Added a ConfigError exception class to signal when the user requests a non-existent property or one with the wrong type.
- Modified the Get*Property functions to place all the error checking in one function and remove code duplication.