Add `creds` subcommands

### Verification
 - [x] `bundle install`

#### `add-password`
 - [ ] `creds add-password frank p455w0rd`
 - [ ] Add a dup: `creds add-password frank p455w0rd`
 - [ ] `creds`
 - [ ] **VERIFY** only one shows up 
 - [ ] `creds add-password frank p455w0rd contosso`
 - [ ] `creds add-password frank p455w0rd template1 pgdb`
 - [ ] `creds`
 - [ ] **VERIFY** all of the above show up seperately

#### `add-ntlm`
 - [ ] `creds add-ntlm bob aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 contosso`
 - [ ] `creds`
 - [ ] **VERIFY** it shows up
 - [ ] `creds add-ntlm bob asdfasdf`
 - [ ] **VERIFY** displays validation error

#### `add-ssh-key`
 - [ ] `ssh-keygen -f /tmp/temp_rsa`
 - [ ] `creds add-ssh-key bob /tmp/temp_rsa`
 - [ ] `creds`
 - [ ] **VERIFY** it shows up and displays the fingerprint
 - [ ] `creds add-ssh-key bob HACKING` (an existing file)
 - [ ] **VERIFY** displays validation error
 - [ ] `creds add-ssh-key bob asdasdfasdfasdf` (a non-existent file)
 - [ ] **VERIFY** displays validation error

#### existing functionality
 - [ ] `use auxiliary/scanner/ssh/ssh_login`
 - [ ] set appropriate options to get some creds
 - [ ] `run`
 - [ ] `use auxiliary/scanner/smb/smb_login`
 - [ ] set appropriate options to get some creds
 - [ ] `run`
 - [ ] `creds`
 - [ ] **VERIFY** expected creds show up for both services
 - [ ] `creds <ssh host addr>`
 - [ ] **VERIFY** only *ssh* creds show up
 - [ ] `creds <smb host addr>`
 - [ ] **VERIFY** only *smb* creds show up

If it's anything other than `nil`, it came from the user and must be a String. Whether it's empty or not is a problem for the individual validators, not the command line.