Better timeout handling

Right now, each time we create a timeout or interval within an instance of the player, we must also set up `dispose` listeners to clean up those timers. This PR adds a `setTimeout` and `setInterval` method on the player that behaves exactly the same as those native functions except they automatically add the dispose listener.
The format of these param docs is actually `@param {Type} argName Description goes here.` Your params are missing the argName.