use Sets instead of Lists

@williamboxhall The inputs/outputs shouldn't have duplicated elements and the order is not necessary.
I am more concerned about the `Clump.traverse`. If I do 
```scala 
val tweetIds = List(1,2,3)
val tweets = Clump.traverse(tweetIds) { tweets.get(_) }
tweets ==== List(Tweet(1), Tweet(2), Tweet(3))
```