Revert "Fix timer leak after multiple Viewer.open() calls"

This should be done with cancelAnimationFrame() instead.

This reverts commit 47aba609403d090b04b144b1e0097e0ea969f7a8.
Fix timer leak after multiple Viewer.open() calls, take 2

Track the request ID of the outstanding animation frame and cancel it
on Viewer.close().

Fixes #76.