Fall back to first pane if activePaneId is invalid

When deserializing PaneContainer.

Fixes #4069

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Disallow activation of destroyed panes

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Disallow activation of panes that aren't in the PaneContainer

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Merge pull request #4103 from atom/ns-fix-active-pane-deserialization

Make deserialization of the active pane more tolerant and add assertions to catch invalid states