Allow a module to force its debug_info to be compiled
Clean up protocol implementation setting the ground for consolidation
Fix bug where nested defmodule was shadowing alias hygiene
Deprecate @only and @except
Improve mix compile.elixir code comments
Improve iex typespec helpers output on bad data
Implement protocol consolidation
Falling back to any in protocols needs to be explicit
Ensure custom types can be prioritized
Read fallback_to_any from @only and @except for backwards compat
Use attributes so we don't force protocols to be loaded
Fix typos (tks @ericmj)
Remove @prioritize from Protocols

The consolidation algorithm is now fast enough that prioritize
does not actually make any difference in performance. We achived
that by compiling the dispatch in two set of functions: one that
checks the types (list, tuple, function, etc) and another that
checks the leading atom name for records (HashDict, HashSet, etc).

By breaking in two different sets, the Erlang compiler can better
optimize pattern matching on those items to the point prioritizing
does not yield any benefit.

Thanks to @ericmj for the initial suggestion.
Merge pull request #1750 from elixir-lang/jv-protocols

Implement protocol consolidation