Make next/previous unread buffer relative to current channel

I found the previous behavior of Ctrl+n a bit confusing: It seemed to pick a random channel to visit next, and rarely picked the one that I'd expected or desired. So I rewrote the buffer selection to find a total ordering of channels that corresponds to the one that a user sees, then activate the unread channel that is closest to the current one as if navigating with Ctrl+Alt+down.

As a bonus, I added a keybinding for Ctrl+p, which jumps to the next unread buffer that's above the currently selected channel.

I hope you like these changes and that you'll add them to the next release - please let me know if I can improve anything about them!