Simplify redraw logic to always be async

The redraw logic seemed to be getting a little complicated and difficult to know if it would redraw async or synchronously. 

I changed the logic to always be async. It makes it simpler and behave consistently.

This will also help fix https://github.com/lhorie/mithril.js/issues/214. I will create another pull request for that fix, but it depends upon this change.