Better init error handling; allow empty db

Initial error checking has been moved into the Store constructor and
reordered and reworked.

- File access is checked, first, then the password is verified.
Previously it did it the other way around, forcing users to type a
password in to find out that the file didn't exist.

- A set of flags now is used to indicate the access mode, one of which
creates a new, empty database if the specified one doesn't exist. This
allows easy creation of databases with the "editpw" command.

- Keyboard interrupts during password prompting are now handled
gracefully by terminating.

- the Store constructor now takes a function to prompt for the
password, making possible non-CLI applications and more elaborate
CLIs, for example one that that will forget a password after a
period of time, and re-prompt the user.