Move serialization of active pane from Pane to PaneContainer

Fixes #2694
Fixel #2853

Previously, we were storing an `active` boolean for each pane. We've had some strange bugs where every pane is serializing `active: false`, which causes exceptions when loading up the stored data.

This new approach serializes the activePaneId on the PaneContainer itself. Since the PaneContainer is the source of truth regarding the active pane, it makes more sense to handle it here.

This unfortunately changes the serialization version for the PaneContainer, so people won't have their pane state persisted after upgrading. But it seems better than leaving cruft to handle the old serialization situation.

/cc @kevinsawicki since this is a critical change.