replace handrolled for loop with TAILQ_FOREACH; from andres.p@zoho.com
move XUngrabServer to the end of client_new() to avoid races where clients,
such as those using sdl, attempt to manage the clients themselves when the
clients aren't fully ready.  other wm's grab the xserver during the whole
client setup process, so match.

behavior found by jsg.
honor PATH search order for exec; from Andres Perera.
- no reason to breakout ClassHints work, so fold into client_{new,delete},
  but keep _MOTIF_WM_HINTS separate.
- simplify fetching app/class hint.
- fix _MOTIF_WM_HINTS Atom type.
zap stray whitespace
add missing proto; replace magic number
missing prototype
consistency
reverse logic to make it like the others
plug memleak; always need to menuq_clear even when a selection is made.
_NET_WM_NAME is UTF8_STRING type
push Screenq into screen_init
makes no sense to set an error handler which uses X_Dpy before XOpenDisplay.
we already set window state in client_hide or client_unhide right before, so
there's no need to do it again.
we handle WM_STATE here, so remove misleading comment.
only a window is required to set WM_STATE.  also un-confuse xu_ptr_getpos
by using 'win' instead of 'rootwin' so as not to imply only the root
window is queried, rather any window.
add conf_ignore and move group_make_autogroup to conf_autogroup to match.
zap extra space
slightly rework WM_STATE set/get to make it less ambigious; will be more clear
on what needs to change to make it right in the end.
mechanical xu_{get,set}state -> xu_{get,set}_wm_state change