Improve linting of map expressions

Map fields are put in their own function instead of being clauses of expr/3.
Also, invalid map construction expressions now emit one error per ':=' field,
at the location of said field instead of one for the whole expression,
furthermore, such warnings do not stop linting of their key and value
expressions anymore. Ill-formed maps constructions are now also properly
detected in guard expressions.
Properly lint calls in Core Erlang guards

Not all calls to the erlang module are legal guards in Core Erlang.
Properly sort map pairs in v3_codegen

Literal nil values aren't tagged tuple but the bare atom nil.

The function lists:sort/2 expects the passed function to return true if the first
element is less than or equal to the second, not strictly less than. The original
base clause is changed accordingly.

Reported-by: Ulf Norell
Properly order Kernel code for maps with mixed pairs

The Kernel instructions were not properly ordered when compiling maps with
complex values mixed in assoc and exact pairs.

Reported-by: Ulf Norell
Support maps in cerl_clauses:match/2

Without this, sys_core_fold could crash on non-matching clauses using maps
patterns.

Reported-by: Ulf Norell
Properly check label use in get_map_elements in beam_jump

Reported-by: Ulf Norell
Add types for new HiPE BIFs

Commit 81c7db0e247a6ee1b7a5c2764aa9575d7f6fb88a broke apart
hipe_bif:make_fe/3 into two BIFs but forgot to properly update the
type information about HiPE BIFs in erl_bif_types.erl.  This commit
fixes this by taking out the types of hipe_bifs:make_fe/3 and adding
types for the new BIFs hipe_bifs:get_fe/2 and
hipe_bifs:hipe_bifs_set_native_address_in_fe/2.
Do not try to optimize non-boolean guards

Expressions such as erlang:'or'(bar, true) can make beam_bool crash if it tries
to optimize them, as this code is not quite really written by users, no attempt
to rewrite them more efficiently should be done, for simplicity's sake.

Reported-by: Ulf Norell
Compile BIF calls and operator expressions to Core the same way

Previously, erlang:'or'(X, Y) and X or Y were not compiled to the same
Core code.
Do not export variables from comprehension cases in v3_core

Code like the following snippet could make the compiler crash:

    f() -> [X = a || false] ++ [X = a || false].

Reported-by: Ulf Norell
stdlib: Fix a Dets bug with leaking file descriptors

Thanks to Hakan Mattson for reporting this bug.
stdlib: Fix a Dets bug where files were deleted

Instead of deleting the small file when opening it with
dets:open_file/2 an error message is returned, mimicking the behaviour
when the file is bigger.

open_file/1 has been modified to return the same error message when
the file is small as when the file is bigger.

Thanks to Hakan Mattson for reporting this bug.
Merge branch 'hb/stdlib/fix_dets/OTP-11709'

* hb/stdlib/fix_dets/OTP-11709:
  stdlib: Fix a Dets bug where files were deleted
  stdlib: Fix a Dets bug with leaking file descriptors
Properly collect labels in put_map instructions in beam_jump

Reported-by: Ulf Norell
Merge branch 'kostis/hipe_bifs-types'

* kostis/hipe_bifs-types:
  Add types for new HiPE BIFs
Merge branch 'nox/compiler/core_lint-call-guard'

* nox/compiler/core_lint-call-guard:
  Properly lint calls in Core Erlang guards
Merge branch 'nox/compiler/beam_bool-not_boolean_expr'

* nox/compiler/beam_bool-not_boolean_expr:
  Compile BIF calls and operator expressions to Core the same way
  Do not try to optimize non-boolean guards
Merge branch 'nox/compiler/v3_core-comprehension-no-export'

* nox/compiler/v3_core-comprehension-no-export:
  Do not export variables from comprehension cases in v3_core

OTP-11770
Update primary bootstrap
Merge branch 'nox/maps-complex-mixed-values'

* nox/maps-complex-mixed-values:
  Properly order Kernel code for maps with mixed pairs