Extract function to XOR 2 streams of bytes

Separate the functionality of XORing two hex strings and two seqs of
bytes - hex string function can use byte seq function.
Remove assertion that may count an infinite seq

In fixed-xor we take 2 seqs, but they don't need to be the same length,
as we take advantage of infinite sequences which only produce enough
items to match a non-infinite sequence when used with map.
Zero pad hex strings created from byte seqs

We weren't zero padding each byte in our hex strings, which meant that
things like (byte 2) would come out as "2" instead of "02".
Broaden test to hex/byte seq conversions
Add code to calculate letter frequencies

Specific to English, but fine for challenges.
Add all-bytes and char-from-byte

A couple of helpers that we're about to use to solve the challenge. Put
in helpers because they're probably generic and useful elsewhere.

all-bytes is simply a sequence of all possible byte combinations

char-from-byte converts, as you would expect, a byte to a character,
taking into account that bytes are signed and their values may need to
be coerced into the valid range for char.
Cook MC's like a pound of bacon!

Add solution to challenge 3. The code to get the answer is in the unit
tests for xor-cipher. The function you want to look at is
find-most-likely-plain-texts.