tests: use p_ instead of posix func directly
clar: wide character comparisons
Make the OpenSSL locking function warnings more severe

Our git_openssl_set_locking() would ideally not exist. Make it clearer
that we provide it as a last resort and you should prefer anything else.
Add the OpenSSL  changes to the CHANGELOG

It seems these were forgotten when initially splitting this up.
Mention the init function in the README

This fixes #2731.
local: add failing test for sideband information

We do not currently generate any messages when we're counting the
objects, as might be expected from a local upload-pack. Assert that we
do call the function when working.
local: send 'counting objects' output

Pretend we have a git process at the other end by creating a similar
progress output when inserting objects into the packbuilder.
win32: use NT-prefixed "\\?\" paths

When turning UTF-8 paths into UCS-2 paths for Windows, always use
the \\?\-prefixed paths.  Because this bypasses the system's
path canonicalization, handle the canonicalization functions ourselves.

We must:
 1. always use a backslash as a directory separator
 2. only use a single backslash between directories
 3. not rely on the system to translate "." and ".." in paths
 4. remove trailing backslashes, except at the drive root (C:\)
tree: Check for `.git` with case insensitivy
index: Check for valid paths before creating an index entry
checkout: disallow bad paths on win32

Disallow:
 1. paths with trailing dot
 2. paths with trailing space
 3. paths with trailing colon
 4. paths that are 8.3 short names of .git folders ("GIT~1")
 5. paths that are reserved path names (COM1, LPT1, etc).
 6. paths with reserved DOS characters (colons, asterisks, etc)

These paths would (without \\?\ syntax) be elided to other paths - for
example, ".git." would be written as ".git".  As a result, writing these
paths literally (using \\?\ syntax) makes them hard to operate with from
the shell, Windows Explorer or other tools.  Disallow these.
reference_create: validate loose names

Validate loose reference names on Win32.
checkout: disallow bad paths on HFS

HFS filesystems ignore some characters like U+200C.  When these
characters are included in a path, they will be ignored for the
purposes of comparison with other paths.  Thus, if you have a ".git"
folder, a folder of ".git<U+200C>" will also match.  Protect our
".git" folder by ensuring that ".git<U+200C>" and friends do not match it.
path: Use UTF8 iteration for HFS chars
Introduce core.protectHFS and core.protectNTFS

Validate HFS ignored char ".git" paths when `core.protectHFS` is
specified.  Validate NTFS invalid ".git" paths when `core.protectNTFS`
is specified.
treebuilder: take a repository for path validation

Path validation may be influenced by `core.protectHFS` and
`core.protectNTFS` configuration settings, thus treebuilders
can take a repository to influence their configuration.
Create miscapitialised dirs for case-sensitive filesystems

We need these directories to exist so cl_git_mkfile() can create the
files we ask it to.
Plug leaks
index tests: test capitalization before mkdir
Merge remote-tracking branch 'origin/master_patch'