Apply a limit to the number of times the seek sentinel runs

The limit is currently set to 2 (so the initial pause attempt happens, then
the sentinel tries twice more before giving up).
Refactor tests
Ensure pause sentinel attempt counter reset by calling pause()
Implemented limited retries for seek sentinel

Refactored some of the existing code for the pause sentinel to bring the
two similar blocks of code into line. Renamed/added assertion to an existing
test.
Ensure that seek sentinel giving up doesn't stop pause sentinel

Added a test to ensure that when the seek sentinel gives up trying, the pause
sentinel is then able to run immediately if applicable.

Adding this test revealed that our seek sentinel always assumed that the seek
was going to be successful and updated the 'last sentinel time' member variable
accordingly. This is wrong and undesirable, so we removed the offending line
as a result of the test.
Added test to ensure that calling playFrom will reset the seek sentinels attempt count.

Added TODO around unecessary use of 'self' in the html5 common tests.
Added test to ensure that when the device enters and exits buffering it does not reset the sentinel seek attempt count
Changed setSource to add media element to root widget rather than body
Throw javascript exception on a new media API error.
Pause sentinel should not emit a PAUSE event when it re-attempts an unsuccessful pause. The PAUSE event is only for the state transition
Remove TODO
Refactor the sentinel-retrying/giving-up logic for better code reuse
Refactor CEHTML tests prior to adding new ones

Pull in getToPlaying() helper function from HTML5 tests. Swap to using it where
possible.
Add fireSentinels() helper from HTML5 tests. Swap to using it.
Calling stop in stopped state no longer changes to error state

Removed common test checking calling stop in stopped changes to error and added new test
checking we stay in stopped.
Introduce configureSeekToFail() helper, change tests to use it
Check calling stop in stopped does not emit a stopped event
Add test to ensure pause sentinel retries twice for CEHTML
Small refactor on eventTypeHasFired() for clarity
Added HTML5 test to make sure calling stop does not call pause on device