erts: Move compiler flags generation

Move the call to utils/make_compiler_flags to after _create_dirs
to make sure that the dirs are created before we try to generate files
in there. This seems to work with parallel make as well, but I cannot
find any documentation that says that it should or should not work.
erts: Fix resolve of generated files for depend
Add test for unknown elliptic curve supported by client

When TLS client sends a Supported Elliptic Curves Client Hello Extension
containing an unknown curve enum value, a server crashes with a
function_clause instead of just ignoring specified unknown curve.
ssl: Server now ignores client ECC curves that it does not support instead of
crashing.

When TLS client sends Supported Elliptic Curves Client Hello Extension
the server shall select a curve supported by both sides or refuse to
negotiate the use of an ECC cipher suite.
compiler: Create literal Maps in creation if possible
Fix evaluation of empty map updates in erl_eval
Fix evaluation of empty map updates in the debugger
Fix evaluation of empty map patterns in erl_lint

Reported-by: José Valim
compiler: Change Maps Core Format

Ex.

Instead of:

    M~{~<K,V>}~

The format is now:

    ~{~<K,V>|M}~

This also removes a shift/reduce warning.

The changes in core_pp now requires compiler-5.0 to compile
because of is_map/1 guard, i.e. a need for a compiler with Maps know-how.
erts: Handle literals in is_map/1
compiler: Guard BIF is_map/1 is pure
compiler: Support literal maps in cerl_clauses:match/2
compiler: Validate Map src

Reject all expressions that are known to fail.
Emit 'badarg' for those expressions.

Ex.

    []#{ a => 1}

Is not a valid map update expression.
compiler: Constant fold Maps that are safe

For updates of Map literals which may cause an error will be
determined in runtime, i.e. instructions are emitted for those
updates.

The changes in cerl now requires compiler-5.0 to compile because of
is_map/1 guard.
compiler: Change #c_map{var} to #c_map{arg}

Not only variables are allowed as arguments, the name should reflect that.

Change cerl Map argument interface
 * cerl:map_arg/1 is more suitable then cerl:map_val/1 in this case.
stdlib: Properly lint map key expressions

Only values are valid key expressions.
stdlib: Move map type to proper definition
stdlib: Accept Maps as Map keys
stdlib: Accept records as Map keys
stdlib: Test Map key linting

This will change in future release.