Fix for RunOneFrame() mouse was not updating.

Since RunOneFrame doesn't use the RunLoop, it doesn't get registered in that case.  So I moved the registration to creation, and unregister on dispose.  
My concern here is when does the idle event fire?

The previous implementation the mouse state was guaranteed to be updated before each `Game.Tick()`.  Now it may be updated or it may not...  it may be skipped one tick...  it may update 2 or 3 times in a row....    all at the whim of when idle events fire.