Unit tests for node/contact.py.
Refactor Contact.

* Simplify __eq__ and derive __ne__ from __eq__.
    Implementing both __eq__ and __ne__ is redundant and error prone.
    One of them should be derived from the other, to guard against
    subtle errors.
* Implement __repr__ and derive __str__ automatically.
    Implementing __str__ but not __repr__ is considered bad practice,
    and makes debugging a bit awkward, because Python drops in a default
    replacement for the missing __repr__. However, if only __repr__ is
    implemented, then it will be used for both repr and str calls.
* Remove execute flag of node/contact.py.
Merge pull request #572 from Renelvon/sane_contact

Refactor and test node/contact.py
Extend database schema for orders refunds
Database Fix
Merge pull request #574 from hoffmabc/DBFix

Database Creation Fix
Use new-style classes.
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.
Factor main function.
Catch only OSError.
Cosmetic fixes.
Use classmethods instead of staticmethods.

* Since the name of the class appears inside the method,
  is should be a classmethod, to ease possible future refactoring.
Simplify get_backups.

* Reverse list in-place.
Filter None objects from list.
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.