abstract ssh "key" manangement and add support for k5login

added --with-ssh-key-type required arg to remove a key: must identify krb5

remove unneeded script

fixed typo in oo-devel-node per jliggitt

pass comment (key id) into krb5 change methods

fixed arg order in key_entry()

added unit test skeleton

try adding key ids for multiple add/remove

added skeleton kerberos k5login unit tests

added K5login initialization tests

add a sample file for read tests

added sample files and test injection inputs and modify() method read tests

tweaked initial state

added test for first principal

used setup() to avoid lots of duplicate initialization

moved initial k5login file path to setup

use _principal internally consistantly

added deep clone and compare

filled in remove principal id test

added formatting commentary

removed unneeded return in K5login.compare

added ownership and permission setting and overrides for unit testing

stubbed Etc.getpwnam calls to avoid permission errors

created test method skeletons for ssh authorized_keys tests

start test for replace k5 principals

added body and unit test code for replace_principals

refactored ssh_authorize_keys some to make it test friendly, started writing unit tests

start adding meat to auth keys unit tests, provide good ssh key validation

added a couple of comments to clever-validate

added test input and a couple of tests for ssh keys

two writes broken

use the default mode and allow override

added new_key test

unpend one complete test

added final remove tests

fixed typo: ssk (thanks Jordan)

preserve principals with nil IDs

preserve principals with nil ids

make key id optional