Silence a misleading warning with some comprehensions

When compiling comprehensions with generators which are foldable to
'true', a misleading warning is emitted by sys_core_fold because a
clause resulting from the compilation of the comprehension to Core
Erlang is not marked as generated by the compiler.

An example of such a comprehension is [ true || true ].
Bootstrap
Wrap eunit macros into begin ... end blocks

This makes typos such as missing commas between two assertions
(e.g. ?assert(true) ?assert(true)) syntax errors instead of silently
compiling and failing with a badfun error at runtime.

This won't break any existing code as parenthesed expressions and blocks
have the same precedence and none of these macros can be used as patterns.
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
Restrict inlining of local fun references

Local fun references look like plain old variables in the Core Erlang
AST but should not be treated as such. Inlining of such expressions is
now restricted to application contexts as a local fun reference should
never occur in a guard.

This is not perfect as it forbids inlining in some safe situations, but
that is still better than a compiler crash.
Added primary bootstrap
run_erl: Redirect standard streams to /dev/null

Like in epmd and erlexec. Otherwise "run_erl" fails on some platforms
when called with the "-daemon" option, printing this error:

  "Cannot dup"
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 some errors in the inets documentation
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.
Merge branch 'nox/fix-fname-inlining/OTP-11211' into maint

* nox/fix-fname-inlining/OTP-11211:
  Added primary bootstrap
  Restrict inlining of local fun references
Merge branch 'nox/fix-comp-warnings/OTP-11212' into maint

* nox/fix-comp-warnings/OTP-11212:
  Bootstrap
  Silence a misleading warning with some comprehensions
Merge branch 'weisslj/run-erl-redirect-dev-null/OTP-11215' into maint

* weisslj/run-erl-redirect-dev-null/OTP-11215:
  run_erl: Redirect standard streams to /dev/null
Merge branch 'nox/eunit-macros-blocks' into maint

* nox/eunit-macros-blocks:
  Wrap eunit macros into begin ... end blocks
Merge branch 'weisslj/fix-inets-doc-errors/OTP-11210' into maint

* weisslj/fix-inets-doc-errors/OTP-11210:
  Fix some errors in the inets documentation
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