Allow calls to ct:pal and ct:print even if CT is not running

Also make sure calls to ct:log and ct:pal don't cause crash
if test_server is not running (could happen during startup or
shutdown of CT).

OTP-11176
Add test

OTP-11176
Make the CT logger print to stdout if test_server is not running

OTP-11176
Fix compile error on ARM and GCC < 4.1.0

Since b29ecbd (OTP-10418, R15B03) Erlang does not compile anymore with
old versions of GCC that do not have atomic ops builtins on platforms
where there is no native ethread implementation (e.g. ARM):

In file included from ../include/internal/gcc/ethread.h:29,
                 from ../include/internal/ethread.h:354,
                 from beam/erl_threads.h:264,
                 from beam/erl_smp.h:27,
                 from beam/sys.h:413,
                 from hipe/hipe_mkliterals.c:29:
../include/internal/gcc/ethr_membar.h:49:4: error: #error "No __sync_val_compare_and_swap"

This patch adds a header guard in "gcc/ethread.h", as is present in
"libatomic_ops/ethread.h".
Fix compilation on Solaris

Trying to compile R16B01 on SmartOS resulted in following errors:

    gcc -c -o ../priv/obj/i386-pc-solaris2.11/ferrule.o -Werror=return-type  -g -O2 -I/root/otp_src_R16B01/erts/i386-pc-solaris2.11  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-tree-copyrename  -DHAVE_CONFIG_H  ferrule.c
    ferrule.c:53:1: error: return type defaults to 'int' [-Werror=return-type]
    ...
    gcc -c -o ../priv/obj/i386-pc-solaris2.11/mod_syslog.o -Werror=return-type  -g -O2 -I/root/otp_src_R16B01/erts/i386-pc-solaris2.11  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-tree-copyrename  -DHAVE_CONFIG_H  mod_syslog.c
    mod_syslog.c:50:1: error: return type defaults to 'int' [-Werror=return-type]
    mod_syslog.c: In function 'make_exit':
    mod_syslog.c:136:5: warning: incompatible implicit declaration of built-in function 'exit' [enabled by default]
    mod_syslog.c: In function 'main':
    mod_syslog.c:131:1: error: control reaches end of non-void function [-Werror=return-type]

Adding return values and types to `main` functions in `mod_syslog.c` and
`ferrule.c` fixed the build.
Bailout if no native implementations are found

Some basic tests are already done in configure. This makes sure we
cover all cases by bailing out when compiling as well.
Change default of erlang:halt/2 to the documented

Bug reported by Jose Valim on the erlang-bugs mailing list:
erlang:halt(0,[]) does not flush as advertised in the documentation.
Should be the same as erlang:halt(0,[{flush,true}]), but is in fact
the same as  erlang:halt(0,[{flush,false}]).
kernel: clarified inet:parse_address/1 referrering to old code
kernel: added ntoa documentation and exported it in inet.erl
kernel: changed tests where inet_parse:ntoa/1 was used to inet:parse/1
kernel: fixed specs to inet:ntoa/1
Fix UTF8String encode

To accept any nested list of codepoints and binaries. A list containing
a binary was previously misinterpreted and the documentation was
incomplete.

Also, rework codec suite slightly to be able to specify values for which
decode o encode is the identity map, for which encode should succeed,
and for which encode should fail.
Use module unicode for UTF8String encode/decode

The original code predates that module but there's no reason not to use
it now.
Simplify Address encode/decode

By using binary comprehensions. Add string-valued addresses to codec
suite.
Merge branch 'anders/diameter/UTF8String_encode/OTP-11172' into maint

* anders/diameter/UTF8String_encode/OTP-11172:
  Simplify Address encode/decode
  Use module unicode for UTF8String encode/decode
  Fix UTF8String encode
Merge branch 'maint'
Merge branch 'mmalecki/fix-solaris/OTP-11213' into maint

* mmalecki/fix-solaris/OTP-11213:
  Fix compilation on Solaris
Merge branch 'maint'
Merge branch 'pan/erlang_halt_2_wrong_flush_default/OTP-11218' into maint

* pan/erlang_halt_2_wrong_flush_default/OTP-11218:
  Change default of erlang:halt/2 to the documented
Merge branch 'maint'