server.c: use syslog
server: smaller msg_info, service_exit() function

msg_info structures use a pointer instead of an array for the buffer.
This comes at the cost of an extra malloc/free for UDP messages, but
saves MSG_MAX bytes of memory for every TCP connection that doesn't use
the buffer.

Also, the service_exit() function is defined to make exiting the service
routine for a message/connection easier.  This handles freeing memory,
closing sockets, etc..