Support source code filenames with spaces

If the names of source code files checked by pre-commit-uncrustify
contain spaces or other special characters, the patch file must be
adapted accordingly.

If the diff patch file contains headers like:

--- a/path with spaces/file with spaces.cpp    [date]
+++ b/path with spaces/file with spaces.cpp    [date]

the "git apply" command will not be able to apply the patch, as it will
be confused by the spaces.

Fortunately it is possible to produce applicable patches in such cases,
by quoting the file names accordingly:

--- "a/path with spaces/file with spaces.cpp"  [date]
+++ "b/path with spaces/file with spaces.cpp"  [date]

It is important to not only quote the file names, but the leading "a/"
and "b/" prefixes must be qouted along with the filenames, like in the
example above.
Allow special characters in the checked file names

Unix systems allow to use file names containing nearly any special
characters, like even ", \, $, <, >, |, *, ?, :, etc.
Those normally have special meaning, but it is still possible to create
file names containing those, if properly escaped by the backslash
character.

This patch adds support for those special characters in the file names
checked by the Uncrustify script.

However, usage of such special characters inside of the file names is
neither common nor encouraged - quite the opposite, it is strongly
discouraged, as it is not very easy to maintain such files, and many
tools are not able to handle them properly.

Particular notes:
- allowed to use quotes inside the source file names
  (those are escaped in the generated diffs)
- allowed to use the backslash character in the file name:
	The Unix file names can contain a backslash character, if it is
	escaped by another backslash character. In Unix/Linux this is
	allowed, as only the slash character is used as a path
	separator.
	Note that in the git script it is not a problem to escape the
	backslash even if used under Windows (where the backslash serves
	as a path separator), because inside the git environment, the
	backslashes in the path are replaced by slashes.
- asterisk and question mark:
	Those are normally used as wildcards in the command line,
	however the Unix file names can still contain them if escaped.

Tested with the following source file name:
-a"b\c)d'e?f*g\)h(i[j]k+l=m&n|o^p%q$r#s@t!u`v~x;y,z<1>2:3.cpp
Merge pull request #4 from emaskovsky/master

Allow spaces and special characters in the file names checked by Uncrustify
Cosmetics: Remove some leftover whitespaces.
Use command to check for uncrustify binary instead of checking the path.

It makes more sense to check whether uncrustify is installed with
'command -v' than checking whether the path is executable. This way we
can simply specify 'uncrustify' as the executable in the configuration
and do not have to enter a full path that varies from user to user. This
means less required configuration by the user when the hooks are
installed which is always a good thing.
Do not advise to use sudo when calling chmod.

There should be no need to use sudo to make the hooks executable as they
are unlikely to be in a system directory.
Do not exit when files are skipped during installation.

Unfortunately 'cp -i' returns with non-zero when a file is being skipped
by the user. As we run the install script with 'set -e' and exit on
errors, the script aborts with the first skipped file. Explicitly ignore
the cp return value instead. This means we do not exit on actual errors
for that call anymore either which is not ideal but okay for now.
Ideally we would do a separate check here.
Merge remote-tracking branch 'upstream/master'

Conflicts:
	pre-commit-uncrustify (resolved manually)