Issue:
[BUG] Outgoing webhook retry scheduler tasks remain in pending state if merchant webhook URL is not configured

### Bug Description

In the outgoing webhook retry process tracker (scheduler) workflow introduced in #3842, the process tracker entries added before the webhook is attempted to be delivered remain in the `process_started` status and `Pending` business status, if either:

1. The `webhook_details` field is not provided in the business profile (or merchant account with default profile).
2. The `webhook_details` is provided but the `webhook_url` within the `webhook_details` object is not provided.
3. The business profile initially had a webhoook URL configured but the profile was updated later to remove the webhook URL (or webhook details).

Since in any of the above cases the URL to deliver the webhook to the merchant is unavailable, the task can be aborted. Another optimization is to not create the outgoing webhook event (in the `events` database table) at all, if the merchant webhook URL is not available.

### Expected Behavior

- The event (and corresponding process tracker task) should not be created in the `events` table if the merchant webhook URL has not been configured.
- In case the business profile initially had a webhook URL configured and was later removed from the business profile, the retry tasks for previously failed webhooks should be aborted.

### Actual Behavior

The process tracker task remains in the `process_started` status and `Pending` business status.

### Steps To Reproduce

1. Create a merchant account without the `webhook_details` object or without the `webhook_url` field, using the API.
2. Create an API key, and create a merchant connector account.
3. Make a successful payment.
4. Query the `process_tracker` table in the database to search for workflows with the runner `OUTGOING_WEBHOOK_RETRY_WORKFLOW` and having the payment ID in the name:

   ```sql
   SELECT * FROM process_tracker WHERE runner = 'OUTGOING_WEBHOOK_RETRY_WORKFLOW' AND id LIKE '%pay_1234%';
   ```

   The `status` is `process_started` and the `business_status` of the task is `Pending`.

Resolution:
<think>
PR Context:
- Title: fix(webhooks): abort outgoing webhook retry task if webhook URL is not available in business profile
- Merged: 2024-03-07T13:23:29Z
- Files changed: 2 files
- Commits: 5 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [x] Bugfix
- [ ] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
This PR fixes a bug in the outgoing webhook retry workflow where process tracker tasks remained in pending state if merchant webhook URL was not configured in the business profile. For more information, see: #3995.

In addition, this PR incl
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** fix(webhooks): abort outgoing webhook retry task if webhook URL is not available in business profile
Files to modify:


**crates/router/src/core/errors.rs**
  Add:
    - function: pub::is_webhook_delivery_retryable_error
    - impl: impl WebhooksFlowError

**crates/router/src/core/webhooks.rs**
  Add:
    - function: private::get_webhook_url_from_business_profile