Issue:
refactor: raise appropriate errors instead of `ValidateError`

## Type of Change
Refactoring

## Description
<!-- Describe your changes in detail -->
To describe briefly, this PR raises appropriate errors instead of `ValidateError` and removes `ValidateError` in favor of `ValidationError`. A better understanding of the changes involved in this PR can be obtained from the commit log.

<details>
<summary>Commit Log (click to expand):</summary>
<ul>
<li>fix(connectors): raise <code>ParsingError</code> or <code>ConnectorError</code> during transformations</li>
<li>feat(errors): introduce <code>PreconditionFailed</code> variant for <code>ApiErrorResponse</code></li>
<li>refactor(stripe errors): minor fixes</li>
<li>docs(ApiErrorResponse): document <code>InvalidDataValue</code> and <code>PreconditionFailed</code> variants</li>
<li>refactor(payments): raise <code>PreconditionFailed</code> error variant instead of <code>ValidateError</code></li>
<li>refactor(ext_traits): raise <code>ValidationError</code> instead of <code>ValidateError</code></li>
</ul>
</details>

## 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 its an obvious bug or documentation fix
that will have little conversation).
-->
Building on top of #40, this PR incrementally unblocks splitting the `router` crate's API models into a separate crate.


## 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)?
-->
N/A

## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt`
- [x] I addressed lints thrown by `cargo clippy`
- [x] I reviewed submitted code
<!-- 
- [ ] I added unit tests for my changes where possible
- [ ] I added a [CHANGELOG](/CHANGELOG.md) entry if applicable
-->

Resolution:
<think>
PR Context:
- Title: refactor: extract email validation and PII utils to `common_utils` crate
- Merged: 2022-12-06T09:49:46Z
- Files changed: 12 files
- Commits: 9 commits

Implementation approach:
**NOTE:** Please merge #71 before merging this.

---

## Type of Change
<!-- Put an `x` in the boxes that apply -->
Refactoring


## Description
<!-- Describe your changes in detail -->
This PR builds on top of #71 (thus targeting that branch for proper diffs). As stated in the PR title, this change extracts email validations and PII-related utilities to the `common_utils` crate.


## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixe
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** refactor: extract email validation and PII utils to `common_utils` crate (#72)
Files to modify:


**crates/common_utils/src/errors.rs**
  Add:
    - enum: pub::ValidationError

**crates/common_utils/src/lib.rs**
  Add:
    - mod: pub::pii
    - mod: pub::validation

**crates/common_utils/src/validation.rs**
  Add:
    - function: pub::validate_email
    - function: private::new_tree
    - function: private::test_validate_email
    - struct: private::ValidEmail
    - impl: impl Strategy for ValidEmail
    - mod: private::tests

**crates/router/src/connector/braintree/transformers.rs**
  Modify existing code

**crates/router/src/core/errors.rs**
  Remove:
    - enum: pub::ValidationError

**crates/router/src/lib.rs**
  Remove:
    - mod: pub::pii
  Add:
    - mod: pub::pii

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

**crates/router/src/utils/ext_traits.rs**
  Remove:
    - function: pub::validate_email
    - function: private::new_tree
    - function: private::test_validate_email
    - struct: private::ValidEmail
    - impl: impl Strategy for ValidEmail
    - mod: private::tests