Fix for #319: 'ctrl+D' and 'ctrl+U' jump much more than they should

This fix uses the visible area instead of the cursor position for scrolling. This makes scrolling a lot more predictable. Previously if the cursor was on the first line that line would be scrolled to the bottom, instead of the half page scrolling that would be expected. Now it looks like:

scroll_size = visible_region.end - visible_region.beginning

new_visible_region.end = visible_region.end - scroll_size

This means that the first line will always be around half way through the new page when scrolling up, and the last line half way through the page when scrolling down.