Refactor backuptool.

* Fix docstrings.
* Raise NotImplementedError if BackupTool.restore is invoked.
* Avoid os.sep; use os.path.join for buliding paths.
* Also delegate separator handling to os.path.join.
* Catch only OSError and tarfile.TarError.
* Use classmethod instead of staticmethod when the name of the class
  appears inside the method, to ease possible future refactoring.
* Simplify get_backups; reverse list in-place, filter None objects.
* Refactor get_backup.
  * Print warning on bad backup path.
  * Strip try..except to absolute minimum.
  * Ensure tarfile is always closed.
  * Print error on exception; return after callback.
* Do not mess with sensitive magic methods.
* Define __repr__ via to_dict; derive __str__ automatically.
* Move testing code to appropriate directory.
* Style fixes.
Merge pull request #834 from Renelvon/sane_backuptool

Refactor and initial tests for backuptool.