Animation loop + EventEmitter for browser, node.js and AMD. Using requestAnimationFrame with fallback.