Fix plug-in hanging indefinitely

Fixed the plug-in hanging indefinitely when the plug-in displays the exception message and the user closes it. Looks like the while loop is an infinite loop, although I can't quite understand why. Reverted to "if" statement.
Revamp StringValidator error statuses
Use SettingValueError exception

If the value assigned to a setting is invalid, raise custom exception named `SettingValueError` instead of `ValueError` so that `ValueError` exceptions that are raised for different reasons are not silently ignored by other classes in the `settings` module.
Create setting classes to validate strings

Created FileExtensionSetting and DirectorySetting which use the `libfiles.FileExtensionValidator` and `libfiles.FilePathValidator`, respectively, to validate these settings.