feat(analytics): implement currency conversion to power multi-currency aggregation

## Current Behaviour

The total amount calculated for all payment analytics buckets related to amounts is incorrect because currency conversion is not being applied before summing the values. As a result, amounts in different currencies are being added together, leading to an inaccurate total.

## Proposed Changes

- introduce `<AMOUNT_RELATED_FIELD>_in_usd` fields to convert and store value in `USD`
- introduce total_in_usd to store the total value in usd
- Generally provide currency_conversion facility to metrics function for other future use cases
<think>
PR Context:
- Title: feat(analytics): implement currency conversion to power multi-currency aggregation
- Merged: 2024-11-06T09:51:02Z
- Files changed: 18 files
- Commits: 12 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
- implemented currency_conversion for calculating values of amount related metrics from their currency (i.e `INR`) to 
`USD` and store it in a separate field variant I created `<fieldname>_in_usd`
- Implemented a total_amount_in_usd variant for all the total fields related to amount
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(analytics): implement currency conversion to power multi-currency aggregation (#6418)
Co-author
Files to modify:


**crates/analytics/src/errors.rs**
  Modify existing code

**crates/analytics/src/payment_intents/accumulator.rs**
  Modify existing code

**crates/analytics/src/payment_intents/core.rs**
  Modify existing code

**crates/analytics/src/payment_intents/metrics/sessionized_metrics/payment_processed_amount.rs**
  Modify existing code

**crates/analytics/src/payment_intents/metrics/sessionized_metrics/smart_retried_amount.rs**
  Modify existing code

**crates/analytics/src/payment_intents/metrics/smart_retried_amount.rs**
  Modify existing code

**crates/analytics/src/payments/accumulator.rs**
  Modify existing code

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

**crates/analytics/src/payments/metrics/payment_processed_amount.rs**
  Modify existing code

**crates/analytics/src/payments/metrics/sessionized_metrics/payment_processed_amount.rs**
  Modify existing code

**crates/api_models/src/analytics.rs**
  Modify existing code

**crates/api_models/src/analytics/payment_intents.rs**
  Modify existing code

**crates/api_models/src/analytics/payments.rs**
  Modify existing code

**crates/router/src/analytics.rs**
  Modify existing code

**crates/router/src/core/currency.rs**
  Add:
    - function: pub::get_forex_exchange_rates

**crates/router/src/utils/currency.rs**
  Modify existing code
{"issue_number": 6416, "pr_number": 6418, "commits_count": 1, "files_changed": 18, "response_length": 2259, "file_count": 18, "needs_breakdown": true}