Move map and struct functionality to elixir_map
* fix Enum.reduce for Maps
* implement Map module
* add Map as Dict implementation

Signed-off-by: José Valim <jose.valim@plataformatec.com.br>
Support structs special forms
Document %{} and % special forms
Improve doc test error messages
Update Erlang dependency in rebar
Implement protocol support for structs
Implement structs fallback in Inspect and add structs option to Inspect.Opts
Raise URI.Error on malformed URIs, closes #2034
Raise URI.Error on malformed URIs, closes #2034
Do not defined a URI.Error, simply raise ArgumentError
Remove unecessary exceptions
Do not defined a URI.Error, simply raise ArgumentError
Remove unecessary exceptions
Add a test to ensure we can still inspect "outdated" functions
print_doc_arg attempted to handle argments with defaults. However, it added " \\ " between them, which is actually the string " \ ".  This meant that (for example) "h IO.puts" dislayed "def puts(device \ group_leader(), item)". Changed it to escape both backslashes.
print_doc_arg attempted to handle argments with defaults. However, it added " \\ " between them, which is actually the string " \ ".  This meant that (for example) "h IO.puts" dislayed "def puts(device \ group_leader(), item)". Changed it to escape both backslashes.
Take deps.loadpaths out of loadpaths to simplify call graph
Compile dependencies when we can in deps.check
Mark dependencies as requiring compilation every time they are fetched