Initial support for named options

After discussing with @divega we've decided instead on:

IOptionsSetup => IOptionsAction
AddSetup => AddOptionsAction
SetupOption => ConfigureOptions

We've also decided to remove the optionsName from IOptionsAction's Configure method, instead the OptionsAccessor can filter using the Name property:

```
        public virtual TOptions Configure(string optionsName = "")
        {
            return _setups == null 
                ? new TOptions() 
                // Always apply default setups (no name specified), otherwise filter to actions with the correct name
                : _setups.Where(s => string.IsNullOrEmpty(s.Name) || string.Equals(s.Name, optionsName, StringComparison.OrdinalIgnoreCase))
                         .OrderBy(setup => setup.Order)
                         .ThenBy(setup => setup.Name)
                         .Aggregate(new TOptions(),
                                    (options, setup) =>
                                    {
                                        setup.Invoke(options);
                                        return options;
                                    });
        }
```

@lodejard do you have any concerns about the new names or behavior?