Added ToBool case for string, and added ToBool test cases

I found that this missing case was preventing viper to correctly understand boolean flags, as they were passed to the Set, SetDefault, etc functions as theirs string values. This fix the issue.