Unbreak floating point on middle-endian machines.

On some ARMs (and maybe other platforms), doubles are stored with the
the two 32-bit words reversed with respect to more common
architectures.

The symptom is this:

> io_lib:write(1.0).
"0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005299808824"

Detect that and account for it when decoding floats.
Sane gb_sets:difference/2 and gb_sets:is_subset/2
gb_sets:fold/3, not lists:foldl/3.
No need to qualify the function
andalso, not and
Implement float_to_list/2 accepting a list of formatting options

The function extends float_to_list/1 by adding a second Options
argument. Returns a string which corresponds to the text
representation of Float using fixed decimal point formatting
rounded to the Decimals number of digits.

    float_to_list(Float, Options) -> string()

        Float   = float()
        Options = [Option]
        Option  = {decimals, Decimals::integer()} | compact

The 'decimals' option controls the number of digits after the decimal
point in the output.  The 'compact' option truncates the trailing zeros
at the end of the returned string.

This BIF is optimized to run 5-10x faster than float_to_list/1 for
floats under 2^52.  Formatting of floats larger than that value is
done using legacy implementation.
hipe_arm.c: remove dead code

erts/emulator/hipe/hipe_arm.c started out as a clone of hipe_ppc.c,
with #ifdefs to select ARM-specific code.  Somehow those #ifdefs
never got cleaned out, resulting in fairly ugly-looking code.

This eliminates the #ifdefs, deletes dead PowerPC-specific code, and
keeps only the ARM-specific code.  I've verified that the exact same
assembly code is generated for hipe_arm.c before and after this patch
(if you compile without -g, with -g there are unavoidable changes to
the debug data).

Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
Added type definition for float_to_list/2
inet_drv.c: Set sockaddr lengths in inet_set_[f]address

Set appropriate values for the sockaddr length fields---sai.sin_len
and sai6.sin6_len---if those fields exist; rely on the NO_SA_LEN
configure check to see if they exist.  The length field exists on at
least FreeBSD, and there it needs to have a proper value for instance
in the call to sctp_bindx, or else that will fail with EINVAL.
Fix SCTP multihoming

Setting several ip addresses for an SCTP socket worked only for IPv4
on Linux.  For IPv6 and for other for instance Solaris and FreeBSD, it
failed with badarg for both IPv4 and IPv6.

For the first address specified to gen_sctp:open, bind is now called,
while for any following addresses, sctp_bindx is called, repeatedly,
with one address at a time.  Previously, sctp_bindx was called for all
addresses in one go, with the addresses in reverse order, and bind was
not called at all if more than one address was specified.  Both
Solaris and FreeBSD requires bind to have been called before calling
sctp_bindx, and FreeBSD additionally allows at most one address at a
time in the call to sctp_bindx.
Add checks for in6addr_any and in6addr_loopback

These variables are normally declared by <netinet/in.h>,
but for instance not on Windows 7, SDK 7.1.

Work around that by using IN6ADDR_ANY_INIT and IN6ADDR_LOOPBACK_INIT
if present, fallback to using :: and ::1.
Allow mixed IPv4 and IPv6 addresses to sctp_bindx

Also allow mixed address families to bind, since the first address on
a multihomed sctp socket must be bound with bind, while the rest are
to be bound using sctp_bindx.

At least Linux supports adding address of mixing families.

Make inet_set_faddress function available also when HAVE_SCTP is not
defined, since we use it to find an address for bind to be able to mix
ipv4 and ipv6 addresses.
Export type erl_scan:location/0
Allow setting of initial position in epp
Create a new "column" option in compile

If set, compile will call epp with a full location {1, 1} instead of 1,
thus making it keep the column numbers in the parsed AST.
Fix printing of errors with column numbers

There was a colon missing after the column number, it must be an error
as it's not missing in list_errors/2.
Test column number reporting in error_SUITE
Fix type compile:err_info/0
Remove Erlang-specific compilation error regexp

The purpose of this regexp is to ensure that, when invoking the Erlang
compiler inside Emacs through M-x compile, any error messages be
turned into links jumping to the right line in the right source file.
However, it seems like this works out of the box in modern Emacsen,
and furthermore, using a non-standard regexp inhibits jumping to a
certain column when this is provided by the compiler.
Fix messages ordering with column numbers

With L1, L2, C1, C2 integers such as L1 < L2 and C1 < C2, locations
are ordered like this:

  L1 < {L1, C1} < {L1, C2} < L2