generator: refactor MultiStrOpt handling

This code was just confusing. Explicitly handle MultiStrOpt differently
from other types to make things more clear.

Change-Id: Ib6a01f76595c8874809c4d6db969ea8200d6fbb2
Merge "generator: refactor MultiStrOpt handling"