refactor, add pane sync support, more fine-grained control of layout

* refactor so that tmux and tmux_split share the same code
* provide meaningful names to windows that contain multiple panes
* add support for option to enable syncronized panes - what is typed
  in one pane is mirrored in all panes of the current window
* set toggle key binding for synchornized panes, and configuration
  option to change the default binding.
* force our window names to stick so that we can reference them to
  set the active window
* add option override to allow user to specify an alternative pane layout
  as per tmux supported layouts (or layouts saved by the user)