Initial work on traversable

This pull requests adds a Traversable protocol to Elixir.

A summary of the changes can be found in this gist: https://gist.github.com/josevalim/337baccd6c31528c47d1

Pending to merge this is:

* [ ] Deprecate a couple functions in the Dict API, namely `Dict.empty/1`, `Dict.new/1` and `Dict.new/2`.
* [ ] Implementation of `Stream.into/2` and `Stream.into/3` for side-effects
* [ ] Implementation of traversable for File and IO streams
* [ ] Support for traversables in comprehensions with the `:into` option

/cc @devinus @ericmj