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.