Refactor block fade out to use promise

Previously looped over all blocks in the grid to check if fading
was complete. Now use promise that blocks use when they're faded
out. This is asyncronous and has better performance. NOTE: This
removes the dependency on the again unused BlockState GONE.