Rewrite mouse handling code

Fixes #1300, #1551, #1556, #2081, #2251, #3284, #3379

Also:
 - adds timer wrapper objects in MainFrm
 - hidden menubar is now acting like on-demand floating one
 - new (hidden) option to autohide controls in windowed mode
 - new option to autohide docked panels
D3DFS: remove horizontal margin from osd posbar

The bug with autohiding is now fixed and there's no reason to have it
there
ChildView: remove unneeded critical section
PlayerNavigationDialog: minor refactoring
PlayerListCtrl: call CWnd::OnTimer() in OnTimer()

Some mfc timers need that
Delay OnIdle() calls initiated by WM_MOUSEMOVE
NavigationBar: remember hide flag in floating mode
Update Changelog.txt
Reload keyframes when media length changes
Treat one keyframe as no keyframes at all
AsyncReader: fix unsigned compared against 0

CID 966060