auth: respect the name given by user on User.AddKey

When the name is empty, we generate it, otherwise we use the provided
name.

Related to #189.
auth: add missing test for duplicate keys
auth: fix error name