Use port_t type for IO ports
Fix clobber list for syscall5

Forgot to add %edi and %esi to the clobber list in syscall5(),
apparently.
Replace queue macros with inline functions

Where appropriate, the macros in queue.h have been replaced with inline
functions.  Macros that operate on generic objects remain.

All queue functions are now inline.  The functions in queue.c are either
removed or replaced with inline functions in queue.h.
Check for empty queue before peek

queue_first() does not return NULL when the queue is empty.
queue_first_safe() could have been used instead, but it's cleaner in
this case to just do the check explicitly.