* Faster search algorithm for finding unused UIDs/GIDs
  - This is mostly done, we're now using a bitvector and a single search which
    seems to greatly increase speed
* Bug checking
* Move utils to a real API
  * prefix each function with CPU_
  * change all code to match
* There is a bug. If you add a user and group with USERGROUPS = yes (say user1
  and then a group is added automagically called user1, also say that the next
  available uid is 100 and the next available gid is 100). Now, calling
  userdel user1 deletes user1 but not the group entry. Now say you want to
  readd user1, so you type cpu useradd user1. The next available userid will
  be 100 again, and the next available gid will be 101. However there is
  already a group named user1. So when you readd user1 it gets uid 100, gid
  101 but there will be no group in the directory with gid 101. The solution
  seems to be that if USERGROUPS = yes then we first check to see if that
  group exists. Not sure what to do if that condition is true.

Problems I haven't yet figured out
* What does dmalloc suck so bad? It catches things that make no sense.

Things that people want that I have promised
* Support administration of flat files
* Win2k administration
