server handling: fix fd_map usage in reallocations

fd_map resizing logic was invalid as it assumed we'd only ever see serially
incrementing sockets which is not the case when a program holds a bunch of
other sockets or other file descriptors.  Fixed fd_map sizing logic and also
fixed a couple of related bugs that I stumbled upon:

* omcache_set_servers() failed to update fd_map as server indexes changed
* omc_srv_connect() didn't report proper errnos in log messages

fd_map array now starts from the lowest seen socket (but does not currently
resize it if the lowest socket goes away) which may use up a little less
memory in case the program already had a couple hundred thousand lower
numbered sockets, but the mapping will still be bloated in an environment
that handles tons of sockets with just a few memcache connections.

A future OMcache version may replace the fd_map array with a hash table.