This patch does a number of things:
- Adds case-insensitive versions of all case functions. This means CaseLower, StartsWithLower, EndsWithLower, and CasesLower.
- Converts the Cases function to use variadic templates. Thanks to rsmith@ for the magic incantation to make this work.
- Adds an alternative to Default() that returns an llvm::Expected<T>. This is useful when you Default is insufficient to determine that a switch fell off the end.
- Adds unit tests for the new case-insensitive versions of the function, as well as the old ones (there were previously 0 unit tests for StringSwitch).