Implementation of "damage" interface

This (messily) moves to using the concept of damaged regions to improve draw
efficiency.