Plugin manager with dependency injection