Move console IO interface to cli/

This interface is specific to the CLI frontend,
so move it to cli/
Add additional documentation for the testing lib
Add function for tokenizing command lines

This will be used in a REPL-like interface for editing items.
Add basic REPL interface for editing items

  1pass edit <item>

Will show an interactive prompt for editing existing items.
Currently the only supported command is 'set <field> <new value>'
Add stub for a command to edit items

This replaces the REPL approach with an edit command
using the syntax:

  edit <item> <action> <action args>

Where <action> is a sub-command to add, edit or remove a field
or section, followed by arguments specific to that command.
Implement modification of item fields

edit <item> set-field <field name pattern> (<new value>?)

Will set the item field to <new value> if specified or
prompt for a new value otherwise.
Simplify CLI test code with prompt matcher
Refactor duplicated code for checking CLI exit status

Most CLI calls are expected to end with a status of zero,
so move the check to CLITest.run()
Simplify code for creating a new writable vault in test cases
Add support for adding new sections and string fields via the 'edit' command

 - Basic implementation of 'add-section' and 'add-field' commands
 - Use an enum instead of the Agile Keychain item kind code for item
   field types
 - Add additional spacing in front of fields when showing items to
   distinguish them from section titles
Remove unimplemented commands to remove fields/sections and rename fields for the moment.
Additional help for 'edit' command parameters
Package version bump