Issue:
[REFACTOR] Refactor process tracker (scheduler) code to increase code reusability and improve logging

### Description

1. The process tracker (scheduler) code includes some amount of repetitive code, which can be extracted out to functions with suitable parameters to accommodate all usages. One such instance is the construction of the `ProcessTrackerNew` type, which is being done manually in multiple places, one of which is:

   https://github.com/juspay/hyperswitch/blob/fff780218ac356bb9b599896e766dd45266ac34a/crates/router/src/core/payment_methods/vault.rs#L1013-L1027

   There exists the `ProcessTrackerExt::make_process_tracker_new()` method which can be used for the purpose, with suitable modifications.

   https://github.com/juspay/hyperswitch/blob/fff780218ac356bb9b599896e766dd45266ac34a/crates/scheduler/src/db/process_tracker.rs#L276-L303

2. The methods from the `ProcessTrackerExt` trait can be moved as methods on `diesel_models::ProcessTracker` and `diesel_models::ProcessTrackerNew` types, and the remaining ones (`reset()`, `retry()` and `finish_with_status()`) can be moved to the `ProcessTrackerInterface` trait.

3. The `business_status` column in the `process_tracker` database table contains high cardinality data due to the business status containing the process tracker ID itself, making it difficult for filtering based on business status. This can be improved by removing the process tracker ID from the business status, thus restricting the number of possible values for the column to a reasonably fixed number and reducing cardinality. (Attaching a screenshot of `business_status` column from a testing environment as of now.)

   ![Screenshot of business status column in process tracker table](https://github.com/juspay/hyperswitch/assets/22217505/c87d0e93-f5f0-42f1-9686-58092d98a87f)

4. The logging setup within the scheduler can be improved to better indicate about errors occurring when things fail within the scheduler.

Resolution:
<think>
PR Context:
- Title: refactor(scheduler): improve code reusability and consumer logs
- Merged: 2024-02-21T12:37:03Z
- Files changed: 17 files
- Commits: 16 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [ ] Enhancement
- [x] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
This PR contains changes to address the problems listed in #3711, namely:

1. Updates `ProcessTrackerExt::make_process_tracker_new()` method to accept a `tag` parameter in order to increase reusability.
2. Moves the `PTRunner` enum to the `
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** refactor(scheduler): improve code reusability and consumer logs (#3712)
Files to modify:


**crates/diesel_models/src/process_tracker.rs**
  Add:
    - function: pub::is_valid_business_status
    - function: pub::new
    - function: private::test_enum_to_string
    - enum: pub::ProcessTrackerRunner
    - impl: impl ProcessTracker
    - impl: impl ProcessTrackerNew
    - mod: private::tests

**crates/redis_interface/src/commands.rs**
  Modify existing code

**crates/router/src/bin/scheduler.rs**
  Remove:
    - function: private::test_enum_to_string
    - enum: pub::PTRunner
    - mod: private::workflow_tests

**crates/router/src/configs/validations.rs**
  Modify existing code

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

**crates/router/src/core/payment_methods/vault.rs**
  Modify existing code

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

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

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

**crates/router/src/db/kafka_store.rs**
  Remove:
    - function: private::update_process_tracker
  Add:
    - function: private::reset_process
    - function: private::retry_process
    - function: private::finish_process_with_business_status

**crates/router/src/types/storage.rs**
  Modify existing code

**crates/router/src/workflows/api_key_expiry.rs**
  Modify existing code

**crates/router/src/workflows/payment_sync.rs**
  Modify existing code

**crates/scheduler/src/consumer.rs**
  Modify existing code

**crates/scheduler/src/consumer/workflows.rs**
  Modify existing code

**crates/scheduler/src/db/process_tracker.rs**
  Remove:
    - function: private::process_tracker_update_process_status_by_ids
    - function: private::is_valid_business_status
    - function: private::make_process_tracker_new
    - function: private::reset
    - trait: pub::ProcessTrackerExt
  Add:
    - function: private::reset_process
    - function: private::retry_process

**crates/scheduler/src/utils.rs**
  Modify existing code