Switch to use a stream of combinations, 2x perf boost, constant memory
usage

Why generate the full array of combinations when we only iterate one at
a time?  Changed to use a stream instead.

hellwigs for n = 10 took 12
hellwigs for n = 11 took 0
hellwigs for n = 12 took 2
hellwigs for n = 13 took 2
hellwigs for n = 14 took 4
hellwigs for n = 15 took 9
hellwigs for n = 16 took 19
hellwigs for n = 17 took 46
hellwigs for n = 18 took 98
hellwigs for n = 19 took 213
hellwigs for n = 20 took 499
hellwigs for n = 21 took 1076
hellwigs for n = 22 took 2237
hellwigs for n = 23 took 4792
hellwigs for n = 24 took 10152
hellwigs for n = 25 took 25437