Exit test with SIGINT

Fixes bug where `SIGINT` would not exit test.

Now that signals are handled by a self-pipe queue (ef645ca), the changes made in 7a3c665 (2 layers of `SIGINT` handling) make less sense. This commit introduces new `SIGINT` handling behavior: if a test is running, the test is exited. Otherwise, the server is exited.

Other changes:

1. Move messages written to/read from queue into constants.

2. Add a "ready" state to indicate whether or not the server is ready for new tests or commands.

3. Reconnect signal traps to signal "handler" methods.