Big update.

- Renamed PA to PointerArray throughout pa.[ch].
- Expanded multiple inclusion #defines to prevent name clashes.
- Added ml.c and ml.h (multilist).
- Added -pedantic to CFLAGS.
- Added paCount() function to pa.[ch].
- Added shortcut for IP address 0.0.0.0 in netHost().
- Changed timeout in mxAwait from an absolute time to a duration.
- Fixed warnings resulting from -pedantic compilation flag.
- Added functions paClear and paDestroy.
- Corrected problems reported by valgrind.
- Added function hashIsSet().
- Removed the test on the stored data in hashSet/hashAdd being NULL.
- Since hash tables can now store NULL pointers, we need to change the
  semantics of hashFirst and hashNext. They used to return data pointers
  and returned NULL if there were no more entries in the hash table.
  They now return an integer 1 if an entry was found and 0 otherwise,
  and they return the found data pointer (which can be NULL) through an
  argument.
- More tests in options.c.
- Added function comments to options.[ch]
- Renamed cx to dis (dispatcher) and mx to ns (network server).
- Fixed wrong return value for disHandleEvents.
- Fixed wrong return value for nsListen.
- Added tests for ns.
- Added functions disAvailable and disIncoming.
- disRun now returns 0 if there were no more timers or files to wait
  for, or -1 in case of an error.
- Added function ihexstr and macro hexstr, removed PARANOID compile
  flag.
- Added include of sys/select.h in ns.h for fd_set.
- Added and tested error return codes for optParse.
- Renamed mlEmpty to mlIsEmpty (in line with list.[ch]).
- Updated ml.c; removed the possibility of an entry being in the same
  list more than once, because it makes list traversal very tricky.
  mlNext() on such an entry always returns the successor of the *first*
  of the multiple entries, so it is very easy to end up in an infinite
  loop.
- Added functions bufAddS and bufSetS to buffer.h.