Added key/value type information for maps to HiPE and Dialyzer

 * Dialyzer and HiPE map types now contain known key/value type pairs in
   a list.
 * Added t_is_singleton/2 and t_map_entries/2 help functions to
   lib/hipe/cerl/erl_types.erl.
 * Added t_singleton_to_term/2 function to erl_types which converts a
   singleton type to its corresponding literal.
 * Added find_terminals/1 case for maps in
   lib/dialyzer/src/dialyzer_dataflow.erl.
 * Added maps:get/2 and maps:is_key/2 to
   lib/hipe/cerl/erl_bif_types.erl, type/5.
 * Implemented the t_inf/2, t_sup/2 and t_unify/2 functions for map
   types in lib/hipe/cerl/erl_types.erl.
 * Extended erl_types:t_from_term/1 with the improved map type.
cerl_trees:label/2 bug with map K/V swap fixed
Added elimination of maps:is_key/2 calls to HiPE

 * Implemented removal of maps:is_key/2 calls of which the result is
   known in a new pass during the typed phase, called
   hipe_icode_call_elim.
 * Added the option icode_call_elim that enables the
   hipe_icode_call_elim pass, and made it default for o2.
Added a HiPE test suite that tests that optimisations work

 * Added a suite opt_veryfy_SUITE.erl to HiPE that tests for the results
   of optimisations, with a single testcase that checks that the
   icode_call_elim optimisation pass does remove calls to maps:is_key/2
   where sound and not otherwise.
 * Made hipe_testsuite_driver only create explicitly listed suites.