Created by: w-shackleton
Fixes #179 (closed) and addresses #158 (closed)
There is still lots of work and testing to do here, but I'd appreciate any comments and thoughts so far.
This code requires the "side scrolling" option be disabled (currently..). It then listens for when the smooth scroll button is pressed and sets the mouse into smooth scroll mode and sets the Evdev Scrolling Distance
such that scrolls don't overshoot. It also disables the mouse button that represents the smooth scroll button since that button being pressed all the time interferes with changing windows and so on.
It also sets the horizontal scrolling distance to a large number to make fast side scrolls behave reasonably when "side scrolling" is disabled (this gives a smooth effect for side scrolls too).