* Config: fix don't create empty dir when resolving path
* Config: refactor config file loaders
* add a layer of abstraction so that config can be loaded from non-files
* use io.Reader / io.Writer abstraction to separate data operations from
file operations
* remove dryrun option from SaveConfig - now it always saves
* rename read and save methods to mention file operations
* log error when encryption prompt fails
* as the user didn't make a choice, we'd prompt again next time the file
is loaded
* add file.Writer tests
* skip permissions test for windows
* defer creating the writer on save to the last moment
* this avoids truncating file when there is error with password prompt
* add a test
* tests with StdIn cannot run in parallel