Fixes Several Bugs

- Keys are now properly generated.  Previously there was an issue with
  how the length of the key char string was computed.  In using the
'sizeof' function, the size of a 'const char*' was being computed
instead of the length of the array.  Subtle difference in how sizeof
treats array references.  In its stead is the strlen function.

- '0' is no longer a key char because distinguishing between and 'O'
  and a '0' is annoying.

- IDs and Keys are now properly saved.  Previously ids and keys were
  being overwritten.  This was an issue in the saveKeyToFile function
not correctly reading the file.

- Adding a new ID now properly checks if it already exists instead of
  just overwriting the previous key.

- Somehow there was an issue when a user removed multiple existing IDs,
  the last one wasn't removed from m_keys hash in ClientIdInterface.
Against my better judgement, just moving the m_keys.remove(clientId)
code to outside the clientFound check fixes the bug, but leads me to
believe there may still yet be a greater bug in the file handling
portion of the code which isn't correctly flagging the clientFound
bool.  Further testing is required.
Fleshes out ClientIdKeyDialog::deleteId()

Previously this function did nothing.  It is now correctly hooked up to
the ClientIdInterface and IdKeyTable to appropriately represent a user's
actions