Refactor logic for user repository path into one class.

Gather logic for building the path/name of a personal user repository into one class.
Set user repository prefix from setting.

Set the user repository name space from settings when starting Gitblit.
Check user prefix for invalid options. Add JavaDoc. Add unit tests.
Add new configuration setting 'git.userRepositoryPrefix'.
Add method JGitUtils.createRepository(folder, name, shared) to create a new
repository as if it was created with the --shared command line switch of git.
Add proper implementation of methods in JnaUtils.

Implement the methods getFilemode and setFilemode
in JnaUtils. Not using the libc names as we don't
necessarily use JNA and because it is not necessarily
a one to one mapping.
Implement adjusting file permissions for shared repositories.

Implement adjusting file and directory permissions for shared
repositories in JGitUtils.
Add new property git.createRepositoriesShared.
Add JavaDoc.
Adjust unit tests for Windows.
Add commons-io to explicit dependencies.

Add the commons-io library explicitly to the depencencies.
It was already present as a transitive dependency but is now used in code.
Using the version 2.2 as that got so far already packaged in ext.
Remove unsupported option '-O' from 'ls' command.
Fix setting wrrong custom mode on file and in config.
Fix set-gid bit clearing under Linux when effective gid is different from file gid.
Avoid NPE when the default branch cannot be identified

This is a normal condition that complicates debugging, i.e.
when catching all NPE's.
Don't crash with an NPE when the cache contains removed repositoried
Merge pull request #117 from robinrosenberg/master

NPE fix in default branch determination & NPE fix when commit cache contains removed repo
Restore blockpush and localclone hooks to binaries (issue-303)
Update to Moxie 0.8.2
Updated binary extensions and Lucene ignore extensions