Refactor for improved testability and readability

This substantially refactors knife-ec-backup-- adding unit tests
and (hopefully) improving the readability and maintainability.

Highlights include:

- Simplified #run methods that give new readers of the code a
  better overview of the steps of the process.

- Smaller functions overall facilitating more targetted unit
  tests.

- Removal of some extraneous cruft

- Increased test coverage.  The coverage is still abysmall (54%),
  but that is 54% more than when the 2.0 branch started and we
  are in a better place for adding more tests.

There's a lot of mixing and matching between `puts` and `ui` for outputting text.  Is that intentional?