node: abstract ssh "key" manangement and add support for k5login

This change adds the capability for a node to accept Kerberos 5 principals for SSH access to gears.

The MCollective interface for managing SSH keys remains unchanged.  The node agent will now except keys with type _krb5-principal_.  It will place these "keys" in the users k5login file.

The existing code to manage traditional SSH public keys is refactored into its own management class and selector code has been added so that each key is placed in its proper location.

The only change to existing functionality is the addition of the _--with-ssh-key-type_ argument to _oo-devel-node authorized-ssh-key-remove_.  This is required so that the process can determine if the key is for ssh authorized keys or a krb5-principal.

All changes take affect in OpenShift::Runtime::ApplicationContainerExt::Environment
Three functions are directly affected:
* add_ssh_key
* remove_ssh_key
* replace_ssh_keys

The signatures and inputs for these functions do not change.
Each function will now accept and respond to "keys" with type _krb5-principal_ and take the appropriate action.