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.
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}]).
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'