docs: Use consistent naming for Kerberos
urldata: Don't define sec_complete when no GSS-API support present

This variable is only used with HAVE_GSSAPI is defined by the FTP code
so let's place the definition with the other GSS-API based variables.
tool: Use Kerberos for supported features
tool: Removed krb4 from the supported features

Although libcurl would never return CURL_VERSION_KERBEROS4 after 7.33,
so would not be output with --version, removed krb4 from the supported
features output.
sasl: Corrected Curl_sasl_build_spn() function description

There was a mismatch in function parameter names.
http2: Don't send Upgrade headers when we already do HTTP/2
examples: Don't call select() to sleep on windows

Windows does not support using select() for sleeping without a dummy
socket. Instead use Windows' Sleep() and sleep for 100ms which is the
minimum suggested value in the curl_multi_fdset() doc.

Prior to this change the multi examples would exit prematurely since
select() would error instead of sleeping when called without an fd.

Reported-by: Johan Lantz
Bug: http://curl.haxx.se/mail/lib-2014-11/0221.html
kerberos: Use symbol qualified with _KERBEROS5

For consistency renamed USE_KRB5 to USE_KERBEROS5.
ntlm: Moved the SSPI based Type-1 message generation into the SASL module
ntlm: Moved the SSPI based Type-2 message decoding into the SASL module
ntlm: Moved the SSPI based Type-3 message generation into the SASL module
sasl_sspi: Added base64 decoding debug failure messages

Just like in the NTLM code, added infof() failure messages for
DIGEST-MD5 and GSSAPI authentication when base64 decoding fails.
sasl_sspi: Fixed compilation warnings when no verbose string support
config-win32: Introduce build targets for VS2012+

Visual Studio 2012 introduced support for Windows Store apps as well as
supporting Windows Phone 8. Introduced build targets that allow more
modern APIs to be used as certain legacy ones are not available on these
new platforms.
win32: Updated some legacy APIs to use the newer extended versions

Updated the usage of some legacy APIs, that are preventing curl from
compiling for Windows Store and Windows Phone build targets.

Suggested-by: Stefan Neis
Feature: http://sourceforge.net/p/curl/feature-requests/82/
easy.c: Fixed compilation warning when no verbose string support

warning: unused parameter 'easy'
connect.c: Fixed compilation warning when no verbose string support

warning: unused parameter 'reason'
sasl_sspi: Removed note about the NTLM functions being a wrapper
runtests.pl: reduce shell usage, fixing LD_PRELOAD

Command invocation via runclient() (which calls system()) using a string
invokes the shell. This has the problem that tests which load
libhostname.so via LD_PRELOAD break when the library cannot be loaded
into the shell (when cURL is built with AddressSanitizer for example).

This patch removes the ability to use shell constructs in commands, such
as backticks, but fixes the above case where an ASAN-enabled library is
loaded with LD_PRELOAD.

The system call (in runclient) and backticks operator (for precheck) are
replaced by fork/pipe/open/select/exec to avoid executing sh. Note that
sh is still invoked when curl is built with shared libs in autotools due
to the libtool wrapper script.

Previously, gdb would always execute the command via a shell. This shell
interpretation behavior is now disabled when stdin is not necessary.

Detection of the `valgrind --tool` option was previously done by
invoking grep. Remove this use of grep. While at it, remove
`valgrind --version` invocation to determine whether `--log-file`
should be used instead of `--logfile`. Parse this information directly
from `valgrind --help` which was executed earlier.

As for differences in log file, these are just whitespace (trailing
space for `curl --version` command, spaces after redirection operator)
and quoting (quotes typically get stripped).

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
runtests.pl: simplify command environment handling

Rather than saving valid environment variables for restoration later,
use 'local' to limit the environment changes to the block executing
a command.

Rationale: LD_PRELOAD may not work with all executables. Previously
it would break on the shell when compiled with AddressSanitizer
(-fsanitize=address), but that is avoided by not executing string
commands anymore. gdb would still be executed with LD_PRELOAD though,
so setting $ENV in this way was not sustainable.

After this patch, environment variables are passed to executions of
precheck (for chkhostname), command (for curl) and postcheck (for
symmetry with precheck, it does not actually use it).

Environment options for gdb invocations are passed through gdbinit.

Note that this patch does not help with an autotools build which uses
shared libs and AddressSanitizer as the 'curl' program is a libtool
wrapper (shell script).

Signed-off-by: Peter Wu <peter@lekensteyn.nl>