style: drop inline from friend definitions

These functions are implicitly inline (11.3/7).
fix(headers): correct impl and improve interfaces

(+) add_header and get_header now accept std::string by reference,
    with the same null-terminated semantics as before.
(+) an insane setup to test header support
(+) header list creation and lookup now use the same algorithm,
    which compare just the field-names.
(+) non-headers are simply skipped.
feat(test): tune test_data helpers

1. get_random_block now returns array of char.  Writing to char
   array with another type does not violate aliasing rules (reading
   does).
2. append_random_text -> get_random_text, just make a new std::string
   and return.  We don't care about nanoseconds lost (shifting to
   insert "x-" at beginning) in unit tests.
test(headers): header heap allocation tests

Also split the random length from get_random_text into a
standalone randint (hope it can be standardized in C++17 :)
feat(request): refuse_body -> ignore_response_body
style: define inline members outside class body

But keep the empty ctors and the equality operators to emphasize the
salient properties of the class.
feat(libcurl): no signals if using async resolvers

Also delay setting up user-agent, so that constructing is cheaper.
style: get rid of unnamed namespace in header

It does not hide `using` declaratives.
feat(httpverbs): manage curl_off_t with of_length
fix(build): fixes for Win32

1. Use standard int64_t
2. lambda does not deduce return type in VC10
3. sprintf_s > snprintf
4. workaround std::array iterator protection
5. size_t is not long enough to trigger of_length test
feat(bodies): callback style perform() interfaces

We abstract the body transfer into two two parts: read to send,
and write to receive, so that the existing perform() call can
be interpreted as:

	perform(/* read */ from_data, /* write */ to_content);

With the new interfaces, each part can be substituted by a sgetn/
sputn style callback, individually.  For the read callback, a total
length is required because nearly no Python WSGI server support
HTTP/1.1 chunked encoding, which is required for sending body without
knowing the total length.

A serious bug in test helpers is fixed: get_random_text() now
correctly generates long text instead of sampling on the small
collection of allowed characters.
fix(msvc): non-ADL algorithms and checked iters
feat(request): ignoring body redesigned

Based on the body source/destination control interface, ignoring
body setting is now a placeholder parameter `ignoring_response_body`
in the destination position.
test(bodies): all body policies are tested
fix(test): use memcpy instead of strncpy in tests

strcpy_s or strlcpy will be better, but anyway, I just want to
silence the stupid VS warnings.
feat(install): install package config file

And export the package.  However, only cmake >= 3.0 can disable
the package registration with CMAKE_EXPORT_NO_PACKAGE_REGISTRY.
style: use .value() rather than implicit conv

The implicit conversion template on of_length may give
users "non-portable" link errors.  Removed.
feat(header_dict): initial implementation

Minimal changes to adapt the existing code into the new header_dict
type, which handles all header-related operations, and appears as
a public member for both request and response type.
style: enforce non-member begin/end

1. Use value_type and size_type wherever appropriate in interface;
2. Use trailing return type to write less full qualified names.
test(header_dict): ensure value semantics

Also add test for a dangerous edge case.  Make sure libcurl does not
read a header in that format (otherwise UB).