Add asyncutil.until() - an async while loop
Improve handling of ambiguous item patterns when copying item values

When using the 'copy' command to copy a field value for an item,
improve handling if multiple items match the pattern by listing
the matching items and prompting the user to select one.
Refactor CLI command handling

Instead of requiring the handler for each command to return
a promise for the exit status, allow the handler to return
a promise for any value.

This allows simplifying the command handlers and removes
the duplicated conversions between promise results and
exit statuses.

 - If the promise is resolved with a non-numeric value, set the
   exit status to 0
 - If the promise is resolved with a numeric value, use that
   as the exit status
Simplify several CLI command handlers

Following the previous refactoring, modify several CLI handlers
to no longer return exit status promises.
Add test for selecting item if there are multiple matches

Add test case for handling prompt to select an item
if there are multiple matches when copying an item field.
Improve CLI help output

Add descriptions for all commands and most flags.