Multi device handling in storage

The storage handles several devices under its root path.
The devices are number from 0 to N.
It is up to the storage to distribute the files under
the different devices and to know how to retrieve them.
The files (.bins) that were previously having two parts
(8K header + data) are now split in two files : a header
file (.hdr) and the data (.bins).

The header file contains the device number where the .bins is
located. The header files are distributed among some devices
thanks to a hash function. In case the number of device is
increased, the hash must not change. It means that the new devices
are not used to store header files. The header files have replicas,
so that when a device is dead the header can be read from an other
device. 3 new configuration parameters are defined in the storage
configuration file:
. device-total      : The total number of devices handle by the storage.
. device-mapper     : The number of devices used for header files
                      (default value is device-total)
. device-redundancy : The number of devices on which a .hdr file must
                      be written. (default is 2)

When some error is encountered on a device an error counter is
increased. When this counter is not 0, the nagios storage plugin
returns a CRITICAL status.

The command "storio_rebuild" enables to rebuild a device or all
devices of a storage. The rebuild is done in two steps:
1) building the lists of files to rebuild. These lists are stored
   in files under /tmp/rebuild.pid directory. By default 3 lists
   are created.
2) launch one storage_list_rebuild process per list file.
The rebuild process clears the error counters.