Eliminate the uses of the Z combinator

We can compute `NUMBER_OF_BITS` by iterating the function which halves a number
and keeps track of how many times it’s done it; e.g. for 9, we can do [9, 0] →
[4, 1] → [2, 2] → [1, 3] → [1, 3] → [1, 3]… to find out that 9 can be halved 3
times, which means its representation has 3 + 1 = 4 bits. We don’t know in
advance how many times we’ll need to iterate that function for some number n,
but we do know that n times is definitely enough.

Similarly, to compute `DIVIDE_BY_TWO` we can iterate the function which
subtracts two and counts: [9, 0] → [7, 1] → [5, 2] → [3, 3] → [1, 4] → [1, 4] →
[1, 4]… tells us that 9 / 2 = 4. Again, n iterations is always more than
enough.