factored out jschannel pair class into a separate file w/ tests.
passing codeMirror to LivePreview is optional; allow passing in jschannel too.
preview to editor mapping listens for codemirror reparse, not preview refresh.