<!-- Describe your changes in detail -->

This PR updates the payments v2 flows to create a customer at connector's end, where applicable, and populate the connector's customer ID in `RouterData`, so that the connector integrations which need the connector customer ID can access the field and pass it along.

Additionally, this PR includes some refactors done around relevant code:

- Introduces a newtype instead of `serde_json::Value` for the `connector_customer` field in the customer v2 diesel and domain models.
- Addresses a `clippy::large_enum_variant` warning arising with the `CustomerUpdate` v2 enum.
- Addresses an unused variable warning for `is_click_to_pay_enabled` field in the business profile v2 code. (I just opened the file and my IDE displayed only this warning in the entire file, so I ended up fixing it.)

## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd recommend starting with one first so the PR
can focus on the implementation (unless it is an obvious bug or documentation fix
that will have little conversation).
-->

As of opening this PR, a customer is not created on the connector's end for those connectors that support / require such an operation. And with respect to the multi-use tokens that were created with Stripe (support added in #7106), the payment methods were created on Stripe's end, but were not associated with a customer, due to which they could not be used to make transactions again, we used to receive such an error:

```text
The provided PaymentMethod cannot be attached. To reuse a PaymentMethod, you must attach it to a Customer first.
```

To address this, we have to create a customer on Stripe's end first, and then pass Stripe's customer ID when saving the payment method with Stripe.

## How did you test it?
<!--
Did you write an integration/unit/API test to verify the code changes?
Or did you test this change manually (provide relevant screenshots)?
-->

Locally, via Postman.

- Create an organization, merchant account, API key, (business) profile, merchant connector account using the respective v2 APIs.
- Create a customer using the customer create v2 API.
- Create and confirm a payment intent, either using the separate APIs, or using the API introduced in #7106, while ensuring to pass `customer_id` field with the customer ID obtained in the previous step.
  - If a merchant connector account was set up with Stripe and the payment is also routed through Stripe, then a connector customer ID must be populated in the database for the customer entry:
    ![Screenshot of connector_customer field being populated in the database](https://github.com/user-attachments/assets/6f40d964-6b7f-46c3-aaab-b0fae72cff88)
- Additionally, if trying a zero amount transaction using the API introduced in #7106, we should be able to use the Stripe's payment method ID returned in our payments response (within the `connector_token_details` field) to create payments with Stripe directly (provided we pass the same connector customer ID as well).

## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt --all`
- [x] I addressed lints thrown by `cargo clippy`
- [x] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible
To implement this **payment** feature, you'll need to modify these architectural layers:


**1. Database Layer (Queries & Schema)**
   - `crates/diesel_models/src/customers.rs`

**2. Domain Models (Business Logic Types)**
   - `crates/hyperswitch_domain_models/src/business_profile.rs`
   - `crates/hyperswitch_domain_models/src/customer.rs`

**3. Core Business Logic**
   - `crates/router/src/core/customers.rs`
   - `crates/router/src/core/payments.rs`
   - `crates/router/src/core/payments/customers.rs`
   - ... and 4 more files

**4. Type Definitions**
   - `crates/router/src/types/storage/customers.rs`

**Code Patterns Applied:**
- Define new data structures (2 changes)
- Implement new functions (10 changes)
- Extend existing types with new fields (65 changes)
- Add conditional logic for feature flags or filtering (4 changes)

**Detailed Identifier Changes:**


Commit 17f9e6ee:
Files to modify:


**crates/diesel_models/src/customers.rs**
  Modify existing code

**crates/hyperswitch_domain_models/src/business_profile.rs**
  Modify existing code

**crates/hyperswitch_domain_models/src/customer.rs**
  Modify existing code

**crates/router/src/core/customers.rs**
  Modify existing code

**crates/router/src/core/payments.rs**
  Modify existing code

**crates/router/src/core/payments/customers.rs**
  Modify existing code

**crates/router/src/core/payments/operations/payment_confirm_intent.rs**
  Modify existing code

**crates/router/src/core/payments/transformers.rs**
  Modify existing code

**crates/router/src/core/payouts.rs**
  Modify existing code

**crates/router/src/core/payouts/helpers.rs**
  Modify existing code

**crates/router/src/types/storage/customers.rs**
  Modify existing code
{"pr_number": 7246, "pr_title": "refactor(payments_v2): create customer at connector end and populate connector customer ID", "merged_at": "2025-02-14T10:19:09Z", "intent": {"feature_type": "payment", "action": "add_feature", "entities": ["customer", "payment", "merchant"]}, "hierarchy": {"database": ["crates/diesel_models/src/customers.rs"], "domain": ["crates/hyperswitch_domain_models/src/business_profile.rs", "crates/hyperswitch_domain_models/src/customer.rs"], "core_business": ["crates/router/src/core/customers.rs", "crates/router/src/core/payments.rs", "crates/router/src/core/payments/customers.rs", "crates/router/src/core/payments/operations/payment_confirm_intent.rs", "crates/router/src/core/payments/transformers.rs", "crates/router/src/core/payouts.rs", "crates/router/src/core/payouts/helpers.rs"], "types": ["crates/router/src/types/storage/customers.rs"]}, "change_types": {"structs_added": 2, "functions_added": 10, "fields_added": 65, "imports_added": 2, "conditionals_added": 4}, "has_identifier_data": true, "commits_matched": 1, "match_method": "pr_number"}