Initial support for named options

The more I look at this the more I fear renaming the SetupOptions method to ConfigureOptions may not be a good idea. Perhaps only the high level framework methods that read from configuration and code should be called ConfigureX? /cc: @loudej