Fix HashDict so that key comparison uses exact match

This change means that HashDict buckets are nolonger strictly ordered.
Previously keys which compared equal (==) but not exactly equal (===)
would be considered different for large sizes but equivalent for small
sizes. This ambiguity occured because hashes are only equal when terms
are exactly equal (===), so both now use exact (===) key comparisons.
Small HashDicts are still a single ordered list and large HashDicts
contain ordered buckets. Both of these may contain keys that compare
equal (==) but are not exactly equal (===), should these keys be present
in the same list or bucket the ordering of these keys (relative to each
other) is undefined.

See github issue #1171 for examples.

Note: If assumptions were made about the form of a HashDict they may
nolonger be valid. Particularly that HashDicts can nolonger be reliably
pattern matched on for equality.
Merge pull request #1177 from fishcakez/hashdict-unordered

Fix HashDict so that key comparison uses exact match
Ensure Enum.to_list and Dict.to_list return exactly the same result
Implementation of a basic test framework for IEx. Closes #919
Write tests for IEx helpers
Rewrite tests for helpers to use capture_iex and capture_io sparingly
Update the tests for l and r helpers
Don't process ANSI escapes in ExUnit output
Add more tests for shell coloring
Add docs for IEx test framework
Clean up test code for module helpers
Update the r helper
Update the docs for Code.load_file and Code.require_file
Add prompt test
Proof-read the doc for capture_io
Minor comment cleanup
Merge pull request #1137 from alco/919-iex-test-fmwk

Test framework for IEx
Make rebar skip deps since mix compiles them
Merge pull request #1184 from ericmj/mix-skip-deps

Make rebar skip deps since mix compiles them
Implement Binary.Chars for URI.Info