Redmine 2573; prevent HP-UX type-punned pointer in FD_SET()

Related to Redmine 1802 and pull request 287.

While the HP-UX "fd_set" type is defined in /usr/include/sys/_fd_macros.h
as a struct of an array of "long" values in accordance with the XPG4
standard's requirements, the macros for the FD operations "pretend it is
an array of int32_t's so the binary layout is the same for both Narrow
and Wide processes," as described in fd_macros.h. In the FD_SET, FD_CLR,
and FD_ISSET macros at line 101, the result is cast to an "_fd_mask *"
type, which is defined as int32_t at _fd_macros.h:82.

This conflict between the "long fds_bits[]" array in the XPG4-compliant
fd_set structure, and the cast to an int32_t - not long - pointer in the
macros, causes a type-pun warning if GCC -Wstrict-aliasing is enabled. The
warning is merely a side effect of HP-UX working as designed, so it can
be ignored.
Remove globals INFORM, DEBUG, VERBOSE, use LogGet/SetGlobalLevel

This fixes an issue where the TLS log context was initialized from
global variables before options were read.
Merge pull request #646 from mvpel/redmine_2573

Redmine 2573; prevent HP-UX type-punned pointer warning in FD_SET()
Fix: POLICY_SERVER has size CF_MAX_IP_LEN. Adjust code that write to it accordingly

(cf3.defs.h: #define CF_MAX_IP_LEN 64)
Fix ACL test.

This is just working around issue 2621.
Merge pull request #647 from kacfengine/fixAclTest

Fix ACL test.
 fix server filter cleanup call
Merge pull request #648 from maciejmrowiec/master

fix for clean server filter call
For new logging, do not print empty classes augmented/diminished
Review messages with LOG_LEVEL_DEBUG
Make ACL test detect missing ACL capability in filesystem.
Merge pull request #649 from kacfengine/fixAclTest

Make ACL test detect missing ACL capability in filesystem.
Update HACKING
Made the acceptance test template more Windows friendly.
(cherry picked from commit c1cf05a1984980c5fda172454679deb415de70cb)
Don't return FNCALL_FAILURE in FnCallReturnsZero.

While it might seem more correct, for "returnszero()" it has the
unintended side effect of making this policy

  classes:
    "commandfailed" not => returnszero("/bin/nosuchcommand", "noshell");

not set the "commandfailed" class. This happens because FNCALL_FAILURE
will never set *any* class, regardless of the negation used.
Support code for Windows Powershell support.

Powershell is implemented for all promise types/functions where
useshell is supported, which are:
  - execresult()
  - returnszero()
  - "commands" promise type

For the two functions, one can now specify "powershell" instead of
"noshell" or "useshell". The "commands" promise type previously
supported only boolean values. These are retained for backwards
compatibility, but the new, preferred keywords are "noshell",
"useshell" and "powershell".

Also removed the need for shell commands to start with a word that is
an absolute filename. Anything you'd want to use a shell for will
defeat this security measure anyway (pipe, chained command), and it
doesn't go well together with shell builtins on either platform (Unix
or Win).

Absolute filenames are still enforced for the "noshell" type.

This solves issue 2143.
Updated documentation for new powershell support.
Added powershell hard class on Windows.

Part of issue 2143, to make Powershell more convenient to use in a
potentially heterogenous environment.
Merge branch 'master' of git://github.com/cfengine/core into winPowershell

Conflicts:
	cf-agent/verify_exec.c
	libpromises/evalfunction.c
	libpromises/exec_tools.c
	libpromises/unix.c
netinet/ip.h requires netinet/in_systm.h

In Linux and other Unixes this is implicitly included, however in
some more exotic Unixes we need to explicitly include it.