Check that we have an editor before we try to move the cursor

Ref #1.
Ensure "LaTeX" is in command descriptions, for searching

Ref #1.
Split command runner from client connection code

Some times we will want to run commands without sending a signal to the
client when we're done.  By using closures, we avoid the need to schlep
so much data around.
Use node.js to exec child processes

On the advice of Chris Granger, this simplifies things significantly.
Move backwards sync from viewer to litex itself

The viewer should just provide the coordinates for syncing and let litex
handle the rest.  This also moves away from the proc/exec calls.
Move bitmap rendering to viewer

This should make it somewhat easier to replace the viewer.
Move rendering from connection to UI element

Also, trigger rendering if we open client for sync, but not for
compilation.  The syncing isn't working though, because it gets in
before rendering is done.
Wait until rendering is done before showing forward sync

In order to get proper measurements, we have to wait for all the images
to load.  So we attach an onload event to each of them and keep a count
of how many we need to see before we can go ahead with the sync.
Behave correctly when SyncTeX returns an absolute file name

Based on debugging by Ivan Borisov.  Closes #1, closes #2.