Issue:
refactor(api_keys): use a KMS encrypted API key hashing key and remove key ID prefix from plaintext API keys

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [ ] Enhancement
- [x] Refactoring
- [ ] Dependency updates

## Description
<!-- Describe your changes in detail -->
This PR modifies the API keys code to use a KMS encrypted API key hashing key instead of using a plaintext hashing key stored in the database.

This includes the following changes:

1. Extracts the KMS code to a separate sub-module within the `services` module.
2. Adds new application configuration for API keys.
3. Modifies API key hashing code to use a KMS encrypted API key hashing key.

### Additional Changes

- [x] This PR modifies the database schema
- [x] This PR modifies application configuration/environment variables

<!-- 
Provide links to the files with corresponding changes.

Following are the paths where you can find config files:
1. `config`
5. `crates/router/src/configs`
6. `loadtest/config`
-->
The migrations can be found at: [`up.sql`](https://github.com/juspay/hyperswitch/blob/4f22018df818e23c6fd6664d6605697bf64e7afa/migrations/2023-02-21-094019_api_keys_remove_hash_key/up.sql) and [`down.sql`](https://github.com/juspay/hyperswitch/blob/4f22018df818e23c6fd6664d6605697bf64e7afa/migrations/2023-02-21-094019_api_keys_remove_hash_key/down.sql).

I'm also clearing API keys from the table since we can't use the old API keys once we add/remove the `hash_key` column to/from the `api_keys` table. Moreover, since the API key endpoints are not being actively used on sandbox, I don't expect this to be too much of a problem.

As for the application configuration:

1. If you're not using KMS (the `kms` feature is disabled), use the value generated by the following command for the `api_keys.hash_key` application configuration variable (we generate a 32 byte long random key and hex encode it):

   ```shell
   $ openssl rand -hex 32
   0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
   ```

2. If you're using KMS:

   1. Set the `api_keys.aws_key_id` and `api_keys.aws_region` application configuration variables to the AWS key ID and region for the KMS key being used.
   2. Generate a 32 byte long random key, hex encode it, then base64 encode it using the command:

      ```shell
      $ openssl rand -hex 32 | tr -d \\n | base64
      MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmMDEyMzQ1Njc4OWFiY2RlZg==
      ```

   3. Use the AWS KMS key to KMS encrypt the API key hashing key, and use the output ciphertext generated by the following command as the value for the `api_keys.kms_encrypted_hash_key` application configuration variable.

      ```shell
      aws kms encrypt --output json --key-id my-aws-key-id --plaintext MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmMDEyMzQ1Njc4OWFiY2RlZg==
      ```

## 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).
-->
Using a KMS encrypted hashing key should slightly increase the security, even if the database containing the API keys is breached.

## 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)?
-->
Manual.

## 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 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(api_keys): remove key ID prefix from plaintext API keys
- Merged: 2023-03-05T13:24:24Z
- Files changed: 2 files
- Commits: 1 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [ ] Enhancement
- [x] Refactoring
- [ ] Dependency updates

## Description
<!-- Describe your changes in detail -->
This PR removes the key ID prefix included in the plaintext API keys returned on creating a new API key. The key ID no longer needs to be sent by the user now that #639 makes it easier to identify the API key record in the database table.

## Motivation and Context
<!--
Wh
</think>

To implement this, you'll need to modify:


(No detailed commit information available)