Merciless refactor.

Removed IsWatched method and renamed IsActive to IsWatched. Reworked
walk_step to better encapsulate checksum calculation. Introduced
temporal coupling in main Scan algorithm, which reduced the number of
fields on the struct and makes the necessary order of operations
obvious.