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