Prevent mousemove spam

Some platforms produce frequent mousemove events whether or not the mouse has moved. This causes the UI to always be displayed since userActive_ is always `true`. By keeping track of the last mouse position and only firing if the new position is different, we can eleminate the event spam.
Making sure a tech exists when starting manual progress and timeupdate events
Trigger one last timepudate when stopping manual timeupdates. fixes #1002
Merge branch 'mousespam' of github.com:download13/video.js into download13-mousespam
Merge branch 'feature/tech-error' of github.com:heff/video-js into heff-feature/tech-error
Merge branch 'feature/fix-timeupdates' of github.com:heff/video-js into heff-feature/tech-error