fixes #2343 - override default settings with custom values

- added check for nil before attribute 'default' is loaded from yaml
- removed logic that tried to set 'value' attr to nil when it was equal to 'default';
  it didn't behave predictably as 'default' can be assigned after 'value'
settings - tests and fixes

- added string settings type
- fixed tests previously commented out due to CI failures
- more tests for core settings functionality
- parsing of string values enhanced and extracted to a separate method
- setting value to nil when it equals default is back