use Sets instead of Lists

@williamboxhall The inputs/outputs shouldn't have duplicated elements and the order is not necessary.
I could be persuade to go Iterable[K] -> Future[Iterable[K]] if it means people don't have to `toList` or `toSet` to use the API, however. But I think if a person passes in a Lists in a certain order, it would be good to honour the order in the way SQL select where ids in(1,2,3) would honour order