Added overdraw visualization.

We should get rid of this - it's very expensive as it's allocating closures for each event, and it's leaking state in ways that could confuse people (the closure depends on the current state so much that if it's not called immediately it'll likely not produce the correct results, but it's hard for all the places that end up with this closure to know that). The mutator model that doesn't require the function to be passed around would solve it.