dummy player: fix timing issues

timespec.tv_sec is multiplied by 1000000000 to convert to milliseconds.
On 32-bit systems, this sometimes resulted in an overflow. Now
everything is stored in uint64_t and no overflows occur.

Additionally, when a buffer underrun occurs in the dummy player, instead
of treating it like an underrun, we continue as if nothing is wrong
without resetting start_nanos. This results in more accurate time
keeping.