Use requestAnimationFrame instead of setInterval for rendering, closes #86