furthered mouse controller to handle moving mouse, scrolling mouse, and ...

...zooming with scroll im smooth mannor, and added testing to verify functionality.
This is a pretty big function, with some discrete logical groups. Maybe it should be split into some private helper functions to make it easier to read?