Implement a command queue.

This avoids blocking the UI when sbt is busy running a
command and the user types something, which can happen
when monitoring is being used. There's no way to look
at the current queue, though.

Also, make sure we stop sbt when stopSbt() is called but
sbt is running something. Due to some problem with sbt's
script not passing SIGTERM to its children for some reason,
a wrapper script is used (which alsp means this probably
will not work on non-Unix OSes).