Force string input default values to pass check()

Certain combinations of check functions and default values must be
checked at runtime (i.e. if a path is being input with /some/path
as default and the check functions validates that it doesn't exist).
If target dir already exist mention existence of upgrade.py in error message
Abort install.py if .install.data already exists
Remove diff.py which has never been used or useful
Drop unused function (reviewing.utils.checkCommitChain)
Clean-up and improve various error handling

Mostly replacing "raise Exception" with either proper reporting
code in cases where invalid input is the cause and with
"raise base.ImplementationError" (or a sub-class thereof) in cases
where the cause is (believed to be) an error in Critic (that the
end-user has no real benefit knowing the details of.)
Fix crash when displaying multiple comments
Add 'criticctl listusers' for listing all registered users

The 'listusers' command takes a --format argument which takes one of the
following values:

 - "tuples": List user data as a python-parseable list of tuples
 - "dicts":  List user data as a python-parseable list of dicts
 - "table":  List user data as a human-readable ASCII table
criticctl adduser: Allow empty password on command line
When changing password, current password may be empty
Check proper UID after calling setuid() instead of checking UID == 0 before

This allows us to run criticctl as the 'critic' user, instead of needlessly
enforcing 'root'.
Fix crash on /showreview on watcher filters with empty path
Regression TC for showreview crash when user watches path ""

The crash was fixed in 3da8555 "Fix crash on /showreview on
watcher filters with empty path".
Add test for 'criticctl listusers' functionality
Change to a more appropriate resize cursor.

Previous didn't work properly on Mac (and non-Opera browser's too probably).
Improve error handling when 'git cat-file' process fails

Report 'git cat-file's standard output in case of failure to
make problems easier to diagnose.

Issue #42
Fix problems with displaying filtered changes

Commit a355b480ed146c49f18e7a5b9452e38b23764857 renamed the local
'filter' to 'filter_value', but not everywhere.  The places it
missed were mostly comparisons to strings, which now ended up
comparing the built-in function filter() to those strings instead.
Add Johan Herland to CONTRIBUTORS
Drop unused func usesExperimentalFeature and some related cruft
Hint about "criticctl CMD --help" in "criticctl --help"