added a ValidationRuleSpec
fix to optionals so that empty strings are not included in the resulting list from OptionalParams
added tests for OptionalParam and OptionalParams