Switch from using canplaythrough event to canplay event.
Use seeked event to exit buffering
Refactored event listeners
Improve remove event listener test

It checks that every event listner that was added also gets removed now.