VideoPlayer Improvements

This PR has a couple of `VideoPlayer` improvements.

Most of our video players don't correctly report `MediaState.Stopped` when a video finishes playing.  So I added an internal `PlatformGetState` method that is called on each call to the `VideoPlayer.State` getter.  It was setup to be optional as I didn't have the time or ability to fix all the platform players to correctly support it.  I fixed the Windows desktop DX platform to support it and that is it.

I fixed `PlayPosition` for Windows desktop DX platform.

There is also a small fix to the unit test framework.  As part of this PR I was working on a unit test for `VideoPlayer`, but it just isn't ready enough to merge for now.