Creates a ImmutableCardSet from a Iterable<Card>.
Iterable<Card>
ImmutableCardSet.of(Iterable<Card> cards) : _indexUnion = cards.fold<int>(0, (s, card) => s | card.index);