Factored the 2D render pipeline to support multiple render layers. This
allows (among other possibilities) a state visualization to have other
rendered information layered on top of it. These underlining changes
should be transparent to existing code.