partial line scrolling

Description

We can hash lines into chunks so that we can detect scrolling even when the edges of the area don't scroll (ie: where the scrollbar would normally be).
Each line could be split as: first ~32 pixels, middle bit, last 32 pixels.
We can either continue to also calculate the hash for the whole line, or just always use the middle bit for calculating the scroll distances.

When sending scroll data, we use the distance values and try to add the edges to it (comparing their own hashes against the scroll distance specified is fast).
Hashes that don't match will get sent as non-scroll areas.