Rotate the player to always face the mouse cursor

May not even flag the mouse cursor at all but keep it showing at all
times, as I may always want the cursor available.
Extract out GLFW input handling into an Interface

This makes InputDispatcher much easier to test and work with. Also
removed any mention of reseting the mouse position as I'm not sure I
need to ever hide the mouse.
Update InputDispatcher tests to better test behavior, not implementation