Allows adding of duplicate user accounts

The user add command assumed the user application identifier was going
to be unique and used it as the config section name.

Adding a second user with the same application then caused an error but
it was decided this was a valid use case.

This adds code to add a numerical suffix in the form (_\d+) if the app
identifier is already in the config.

Previously the user had to try the command again with an alias of their
own whilst now we select one for them (that they can manage and change
as before).
Moves "retry" prompt to error path

Adding a new user prompts the to retry the failed command. Previous
attempt at fix still left the prompt on the code path after adding a new
user client.

This moves it to the error path so should only appear when we are
reauthenticating following rejected credentials.
Attempts to set default account on user add

When adding a new user app, we attempt to set the default account to cut
down on API calls in future.
Restructures user add contexts to be flatter

Tried a version to emulate the command but too many variants on the
basic command need their own contexts.
Adds info about selected account

Also tests selection of first account when multiple are available to
select from.
Sets default account upon adding new API client

An API client is only ever going to have access to their owning account
but without setting the default the lookup for a default code was
triggering each command.
Adds test for adding client with no config file

Default test setup creates a skeleton config file but some bugs may
exist when trying things related to the file itself. Hopefully this will
catch them.
Improves error message when adding bad client-id

Original errors did not mention the argument that did not match the
pattern. So if the argument order was wrong you may not realise what the
problem was.
Changes config/alias to be email (deduped)

Rather than using the user app details, this changes the alias used to
be the users username/email instead so it is clearer which config is in
use.

The emails are less likely to clash compared to the app ids.
Only selects pending or active accounts by default

Picking a closed account because it was created first adds work in
setting up which this can avoid.