Dict as Map

Support for maps added.

Encoder handle maps automatically, decoder now has an option to choose on which struct dict should be decoded (dict, orddict, maps).

Code is absolutely pre-erlang 17 compatible, since it uses efficient backwards-compatible feature-detection in runtime (see https://github.com/basho/lager/pull/214#issuecomment-51920796 for details).

So `pickle:term_to_pickle(#{<<"a">> => 1})` now works, as well as `pickle:pickle_to_term(<<...>>, [{dict_module, maps}])` will return maps instead of dicts.