Tab completion

This uses an always-running kernel to provide tab completion to cells which are not linked or whose kernels have not started. After a linked cell is executed and given a kernel, that kernel will be used for tab completion. All communication is done over WebSockets.