tool_main: Moved config struct initialisation into a separate function

In preparation for adding URL specific options moved the initialisation
of the Configurable structure into a separate function in tool_cfgable.
tool_operate: Moved initial config setup into new init_config() function
tests: Fixed test172 cookie expiry

The test contains a cookie jar file where one of the cookies has an
expiry date of 1391252187 -- Sat, 1 Feb 2014 10:56:27 GMT which has
now expired. Updated to Wed, 14 Oct 2037 16:36:33 GMT as per test
179.

Reported-by: Adam Sampson
Bug: http://curl.haxx.se/bug/view.cgi?id=1330
tool_operate: Moved memory tracking initialisation into tool_main
tests: Moved some comments so the test data files parse as XML
tool_main: Changed stack based config struct to be heap based
tool_main: Fixed compilation warning from commit 0104678c79

no previous prototype for function 'memory_tracking_init'
tool_operate: Moved main initialisation and cleanup code into tool_main
tool_operate: Simplified parse .curlrc decision logic
tool_operate: Moved command line argument parsing into separate function
openssl: add ALPN support

Add ALPN support when using OpenSSL. This will offer ALPN and NPN to the
server, who can respond with either one or none of the two. OpenSSL >=
1.0.2 is required, which means as of today obtaining a snapshot from
ftp://ftp.openssl.org/snapshot/.

See:
http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04
https://github.com/openssl/openssl/blob/ba168244a14bbd056e502d7daa04cae4aabe9d0d/ssl/ssl_lib.c#L1787
tool_operate: Moved libcurl information gathering to tool_main
gtls: add ALPN support

Add ALPN support when using GnuTLS >= 3.2.0. This allows
libcurl to negotiate HTTP/2.0 for https connections when
built with GnuTLS.

See:
http://www.gnutls.org/manual/gnutls.html#Application-Layer-Protocol-Negotiation-_0028ALPN_0029
http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04
HTTP2: add layer between existing http and socket(TLS) layer

This patch chooses different approach to integrate HTTP2 into HTTP curl
stack. The idea is that we insert HTTP2 layer between HTTP code and
socket(TLS) layer. When HTTP2 is initialized (either in NPN or Upgrade),
we replace the Curl_recv/Curl_send callbacks with HTTP2's, but keep the
original callbacks in http_conn struct. When sending serialized data by
nghttp2, we use original Curl_send callback. Likewise, when reading data
from network, we use original Curl_recv callback. In this way we can
treat both TLS and non-TLS connections.

With this patch, one can transfer contents from https://twitter.com and
from nghttp2 test server in plain HTTP as well.

The code still has rough edges. The notable one is I could not figure
out how to call nghttp2_session_send() when underlying socket is
writable.
http2: store response header in temporary buffer
http2: Check stream ID we are interested in
http2: handle incoming data larger than remaining buffer
http2: enforce gzip auto-decompress

As this is mandated by the http2 spec draft-09
tool_operate: Introduced new operate() function
tool_operate: Introduced operate_init() function