first-solution

The bottleneck is in 'max-mask-from-char' and 'luhn-test?' functions. I
should be able to cache partial sums and avoid reversing the input for
the test.

The structure of 'mask-cc-number' is quite efficient and easy to
understand tho.