Modified oneOf to handle arguments as arrays of items and options.

Also added ability to use %s string substitution in custom error messages in addition to built in ones.