Allow the `key` option to be a Proc

Ideally things like keys and passwords should not be stored in the repo with the application. Allowing the key option to be a Proc affords us some extra flexibility in where the keys are defined, whether it be in:

- A plain text or YAML file
- A value set in TuitionPortal::Application.config

With either of these, you can keep the key itself outside of the repository, and allow our deploy scripts to copy the files (or an initializer) in as desired.