The second part doesn't actually need to start the search at the low
points; just iterating everything and keeping track of visited spaces is
enough.
Now that the iterator is only used in part 1, we inline the iterator to
remove some overhead from the code.
By working with binary numbers as integers rather than byte strings, we
don't need to allocate a Vec for each of them, reducing us to just the
allocations in the outer Vec.
Simplify part 2 a lot, by not actually computing the sums because they
do not matter, only the changes do. Also eliminate the allocation
overhead while parsing line-by-line input.
Fixes the existing clippy error because the offending line no longer
exists.