Fixed issues in keychain

-“Generic” is not unique enough property for keychains, so add
“account” and “service” attributes as well to the keys
-Updated storeKey() to remove the key before storing it so it can
support updating, since it’s a generic public method
-Updated storeKey() to actually throw IOException on failure as the
comments indicate it will
-Updated logs