Process Sign/Encrypt values later on update

A value for Sign or Encrypt of undef is an indication of "do whatever
the queue's options say."  d3341b7 resolved a bug of inserting array
references into X-RT-Sign, but in doing so lost the possibility to pass
undef into ProcessUpdateMessage, and have the queue default kick in.  In
practice, this is only relevant if the signing controls were not
submitted, but customizations may do so.
Refactor code which calls GPG::Interface to elimate duplicate code

Many of the functions in RT::Crypt::GnuPG contain nearly-duplicate
swaths of code.  Refactor these into a common CallGnuPG method, which
deals with setting up IO handles, printing content, trapping errors,
reading output, and returning results in the form of a data structure.
Generalize CallGnuPG slightly more, allowing more code reuse

Three remaining locations had not been altered to use CallGnuPG, for two
reaspons: they required custom interactions with the streams beyond
simply printing content into gnupg's stdin, and because GnuPG::Interface
provided no direct method to call them.  Extend CallGnuPG to allow both
of these features, which thus allows for more code removal.
Minor cleanups to Probe, the one remaining non-CallGnuPG gpg interaction
Catch errors on close()
Rename Key to Signer for clarity and consistency
Rename Method to Command for clarity; "--foo" is not a "method"
Only set the default key if we actually have one
Only set the passphrase if we have one
Split IO::Handle::CRLF into its own file in RT::Crypt::GnuPG::CRLFHandle

In doing so, also document the reasons it is necessary.
Switch out RT::Crypt::GnuPG function calls for class methods

This will allow subclassing of different RT::Crypt::... classes.
Create a generic RT::Crypt class to dispatch methods from
Move data-storage UseKeyFor... methods onto RT::Crypt

These methods are orthogonal to the type of encryption used.
Provide a RT::Crypt->LoadImplementation method to load RT::Crypt::...
Add RT::Crypt->Protocols, to return the supported encryption protocols
Make protocol loading case-insensitive
Add a role for encryption classes

This describes the base set of interfaces that an encryption protocol
must provide.
Move GetPassphrase onto the role
Move SignEncrypt to dispatch from RT::Crypt
Do not error if no From address is provided

If the correspond address is neither set globally nor on the queue, the
From adress will be empty.  While this is a misconfiguration, avoid
erroring out when attempting to guess the signing address.