feat: add pluggable ConfigProvider system
Refactors c12's config loading to use a provider-based architecture:
- Add ConfigProvider interface with name, priority, and load() method
- Built-in providers: overrides, main, rc, packageJson, defaultConfig
- Providers sorted by priority (lower = higher precedence)
- New options.providers allows custom/replacement providers
- Providers can access previously loaded configs via context
- Backward compatible: loadConfig() works unchanged without providers
- Exports: getDefaultProviders, sortProviders, create*Provider helpers
This enables users to:
- Inject custom config sources (env vars, remote config, vault)
- Reorder or remove default sources
- Build configs that depend on other loaded configs