hostname: refactor, cleanup and test coverage

This is a largish patch that contains multiple changes to the hostname
module.  The intentions of this patch are:

  * port new functionality from PE, which is essentially custom-domain()
  * make the code easier to follow and define clear semantics of all
    functions and test it via a unit test program
  * add the foundations of a custom-domain() option that can be used to
    override the local domain name
  * introduction of global_init/deinit function pairs
  * add two new functions that convert a hostname from fqdn to short and
    vice versa

Although it'd be better to split this patch along these lines, however
splitting it up is not really easy because of the internal dependencies, and
that the original was written as a single iteration. Essentially internal
steps would need to be rewritten from scratch.

Signed-off-by: Viktor Juhasz <jviktor@balabit.hu>
Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
host-resolve: use hostname provided functions instead of global variables directly
cfg: implement custom-domain() setting
host-resolve: factor out normalize_hostname()
host-resolve: introduce HostResolveOptions

This patch adds HostResolveOptions to contain all resolver related
configuration options.

Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
host-resolve: reindent error messages
host-resolve: only declare resolve_lock if needed

This patch avoids the declaration of resolv_lock if not needed.

Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
mainloop: factor out the query of the number of processors into a separate function

Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
compat: Move into a subdirectory

In preparation for splitting up compat.c, move it and the header to a
subdirectory.

Signed-off-by: Gergely Nagy <algernon@balabit.hu>
lib/compat/: Split compat.c into smaller files

Instead of having one monolithic file for all compat functions, separate
them by topic (by function, except in case of pread/pwrite).

Signed-off-by: Gergely Nagy <algernon@balabit.hu>
Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
gprocess: introduce g_process_get_mode() to query the current execution mode
gsocket: add win32 support

This patch add a g_socket_global_init()/deinit() functions that allows
explicit initialization of socket related code. It is used to
initialize winsock2 on Windows.

Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
syslog-ng.h: added windows.h inclusion

This patch adds the inclusion of the Win32 windows.h header into syslog-ng.h
through a compat/win32.h wrapper. It uses the WIN32_LEAN_AND_MEAN
macro to minimize the global namespace pollution.

Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
compat: added a number of time related function implementations for platforms that lack them

These functions are implemented:
  - clock_gettime() - based on gettimeofday, potentially platform independent
  - localtime_r()   - based on localtime(), potentially platform independent
  - strptime()      - implementation from NetBSD, potentially platform independent
  - nanosleep()     - Win32 specific
  - sleep()         - Win32 specific

Signed-off-by: Viktor Juhasz <jviktor@balabit.hu>
Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
compat: add win32 specific fsync implementation
compat: add win32 mmap() implementation
compat: add win32 specific getpid() implementation
compat: add win32 specific socket helpers

This patch adds a number of socket functions that are missing on Win32.

These are:
  - inet_ntop
  - inet_pton
  - inet_aton

Signed-off-by: Viktor Juhasz <jviktor@balabit.hu>
Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
compat: add win32 specific iov implementation
compat: add strtok_r implementation for platforms that lack that