Allow subview layering to be changed

I wanted to change the layering of the subviews so that the second
subview was behind the first subview (in my case, I have a UI element
in the first subview that deliberately oversteps its clipping bounds
for effect).  However, simply sending the second subview to the back of
contentView changed the iteration order during the layout process,
causing the subviews to be visually reordered.

This change uses a mutable array to track the subview addition order
distinctly from the layering order, and allows bringSubviewToFront: and
sendSubviewToBack: to work as callers would expect.