Clear cells before redrawing to avoid pixels being left when using rounded corners
Only draw cells when they need to be updated
Use requestAnimationFrame instead of setInterval
Merge branch 'develop'