Rearrange some code
Don't change the selection on scroll

Instead, move the selection to the screen when you hit an arrow key. Has
a bug if the selected message goes off-screen.
Handle the case when the selection moved off-screen
Fix selection behavior on end
Get alignWithTop correct for scrollIntoView
Move the selection on pageup, etc.
Select messages on click
Even more complex scrolling

Probably this logic could be simplified somewhat. This prevents a bit of
jumping around.
Anchor large messages correctly when a reset-scroll is needed