Settings were being revalidated in cases where they had already
been validated.  This has been fixed and settingsValidationAlreadyDone
has been renamed to needToValidateSettings (i.e. the opposite), which
seems to make things clearer.
Fixed a couple of bugs where exceptions weren't being handled well.