Use core async for updating canvas

cc @r00k 

![maze](https://f.cloud.github.com/assets/65323/2250980/9bca761e-9d96-11e3-9bf5-921b22f9353e.gif)