Add Sets to Elixir

## What?

Adding the Set type to Elixir 

```elixir
HashSet.new([1,2,3,4,5,6,6,6]) # => #Set<1,2,3,4,5,6> 
```

## How?

Based on a similar strategy to HashMap (using ordered sets) selecting the right data structure for the size of the Set to maximise performance. 

1. A single bucket to start with
2. Expanding to a set of buckets on larger size.


Idea and discussion came from google group:
https://groups.google.com/forum/?fromgroups#!topic/elixir-lang-talk/RNVN-uBLKIw