Initial support for named options

I am still not understanding the need for this type very well. It seems that we could collapse OptionSetup<T> and OptionAction<T> into one.