implement mouse triggered scrolling
This greatly fleshes out the glfw based input handling and adds mouse based scrolling to the keyboard scrolling.
The basic idea here is to consider the outer 15% of the current viewport as scrolling trigger areas and use the same behaviour as if the user were pressing the cursors case in the selected direction.