Adds Support for Keyfile Key

Previously, the module could specify a keyfile (i.e. /etc/keyfile)
but could not create the file and populate it with a key. This
patch introduces the key parameter that allows a user to specify
the key to use for keyfile-based authentication.
Could you validate this as a string if it's not undef? (using `validate_string()` from stdlib)