cleanup: do not overwrite cmd with NUL bytes

This is a minor fixup, but may become useful, if we ever try to share
more data structures with other threads. It may also be a tiny bit
faster to compare only strings of the right size. ;-)
cleanup: get rid of two separate file descriptors

The socket descriptor is read-write, so it can be used for both
directions. Instead of closing the input stream, we can shut down
one half of the socket, which does the trick (reports EOF on next
read, and thus terminates the connection).
Merge branch 'master' of github.com:ptesarik/crashgui
cleanup: remove linelen from struct conn

This is a write-only field. So, it's clearly not needed.
Implement a generic read_atom() function

To get this right, the current pointer (the "cursor") must be stored
in struct conn, and updated appropriately. This seems messy at first,
but it's great for code reuse.
cleanup: replace cmdlen with cmdend

The pointer to the end is more useful than the length.
cleanup: add a set_response() convenience function

This function can be used to set a custom response text.
convert send_untagged() to a variadic printf-like function

Since some commands may want to send a complex string, this makes using
the function much easier.
add SYMBOL command

The "SYMBOL" command can be used to translate an address to a symbol
name.
Document the SYMBOL command