Implement a facility to encrypt arbitrary strings.
Use Case: Storing sensitive information in the database.
Requirements:
- Integration with AWS KMS to make use of managed keys
- Admin configurable KMS key ARN
- If facility is not properly configured, dependent features will fail such that unencrypted information is never stored unintentionally.
Dependency of #53 and its children.