Genie:  Reduce select()'s include footprint
relix:  Don't resize in fd_map::first_unused()

This is redundant here, since resizing is already handled in operator[].
Furthermore, fd_map::first_unused() can now be properly const, and won't
throw exceptions.
relix:  Respect minimum in fd_map::first_unused()

Respect the fd minimum even if it exceeds the next unallocated slot.  If
first_unused( 3 ) were called on an empty fd map, it would return 0, not
3, prior to this patch.