Allow async tests to signal completion by returning a promise

This avoids the error of failing to invoke continueTests() once
all async operations have completed or forgetting to call
done() at the end of a chain of promises in the test case.
Add edit command to rename vault items

The syntax is 'edit <item> rename <new title>' where
'<new title>' is trimmed and the result of trimming must not
be empty.
Convert CLI tests to return promises instead of calling continueTests() manually