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'
fixes #2660 - settings, improve 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
- create! is now prefered method for creating settings as it raises exceptions on invalid states
- setting takes string as default type when parsing values from user input