cf-serverd: free getaddrinfo() result, on error of OpenReceiverChannel()

getaddrinfo() may allocate the 'result' struct even in cases where it
will return an error. Take care to free memory, although we would exit
the server process anyway.
cf-serverd: getaddrinfo() will use a numeric port, no lookup

This `AI_NUMERICSERV` flag avoids looking up the "services" table for
a string port resolution, according to the manual.
cf-serverd: getaddrinfo() will NOT set "errno" upon failure

It has its own `gai_strerror()` function to resolve its (reentrant)
result code.
cf-serverd: fix typo for addrinfo constant

As spotted by Dimitrios Apostolou
Typo.
Merge pull request #1630 from jimis/reverse_dns_access_rules

Typo.
Do not segfault on type checking NULL Rvals.

Add unit test. Close #5416
Add systemd service files
Hostname access_rules check now uses SearchLongestPrefix()

This way, host "www.cfengine.com" will match to the rule ".cfengine.com"
but not to the rule "cfengine.com".

Also it won't happen by accident that "www.cfengine.com" matches to
".com" rule if present together with ".cfengine.com".

Also reshuffled the logic a bit.
Fix reverse lookup in TLS connections.

Because there is no CAUTH command in the new TLS connections, we have to
reverse-lookup the connecting IP address, so that we can check the
admit/deny access_rules later. With this patch we do that *only if*
there are any admit/deny hostname rules. Thus the ugly global
NEED_REVERSE_LOOKUP.

To perform the reverse-lookup within each spawned thread and minimise
latency, we are passing the struct sockaddr that accept() returned to
the spawned thread by (ab)using the ConnectionInfo struct. In the future
I expect the ConnectionInfo and the ServerConnectionState structs to be
unified, ideally with all sub-pointers and sub-allocations merged.
Acceptance tests for admit/deny access_rules using hostnames with new protocol.

Actually they contain subtests for both protocol versions, but the old
protocol is commented out because of our buggy connection cache we can't
have different protocol connections open to the same host.
Redmine#5417: add "suse" class to existing SUSE and SuSE classes
Merge pull request #1633 from jimis/reverse_dns_access_rules

Reverse dns access rules
Don't use /tmp on Windows, instead use value of TEMP env variable.

Also give an error if no appropriate environment variables are set.
Add InitializeWindows() call to avoid crash popups on Windows.

Popups block the test execution.
Rename mock-package-manager to use '_' for easier tool handling.

Main reason is that '-' is not allowed in variable names.

Redmine #5266.
Several Windows fixes regarding shell rules and path separators.
Typo.
Use size_t where we should.
Skip some test cases on Windows.

Those that test package listing functionality directly are marked as
unsupported, since Windows doesn't use the package body for that.
Those that merely depend on it for testing something else are marked
as needs_work.