Change HashDict implementation to use tries with compound nodes

The new implementation is basically a tree of tuples (tries) but
they allow compond nodes (a node with a key-value pair and a
sub-tree). This removes the need for node-expansion and also simplifies
the design structure to not require multiple stages nor buckets.

The end result is a faster HashDict implementation (about 10% faster
on access, 30% on updates), which is still small for small dicts
but about 30% bigger for large dicts (in terms of memory) and with
a much simpler implementation.
Clean up DictTest implementation

Before this commit, DictTest used too many helper functions
and  used assertions in the opposite order.
minor typo in doc
Merge pull request #2009 from xumingthepoet/master

minor typo in doc
Remove ** from operators list for now
Fix HashDict.pop signature
Inspect :... and :foo@bar as valid atoms
Range is no longer a record

The goal is to simplify and allow us to extend ranges in the future.
Also, incentivate people to use `first .. last` in pattern matching
instead of `Range[first: first, last: last]`.
Update CHANGELOG
Convert HashSet to use the new trie implementation
Fix functions as default values in records

successful check_value/2 needs to return its second argument
Merge pull request #2012 from cabo/master

Fix functions as default values in records
Add a test for records with default function fields
Deprecate keywords, getter and list getter functionalities of defrecordp

Those functionalities can still be simulated via pattern matching
and perform basic operations. The reason for this deprecation is
that we are starting to unify defrecord/defrecordp syntaxes, so
instead of doing a big change at once, we are first bringing them
to a common set of functionalities to easy migration in the future.
Ensure proper dependency on bootstrap
Clear project stack in mix teardown
Ensure proper tokenization of the ... identifier
Remove duplicated type assertions
Move Elixir version mismatch to a warning, closes #1951
Rename Mix.Deps.Retriever to Mix.Deps.Loader