sl2: Implement copy_on_change functionality.

This will copy displayables when their children change, which will
eventually let us use transitions to show changes in screen state.