Implement auto inflation/deflation in the storage daemon.

This code implements automatic deflation (compression)
of data read or written to a device and automatic inflation
(uncompression) of data written or read from a device.

This allows you to do the following:

- Compress data on the FD send it to SD and write it to the device uncompressed.
- Send data uncompressed from the FD to the SD and write it to the device compressed.
- Read compressed data from a device and send it as uncompressed data to the FD.
- Read uncompressed data from a device and send it as compressed data to the FD.

Fixes #187: Implement auto inflation/deflation in storage daemon.
Implement NDMP enhancements.

Currently we only allow all or nothing restores for the NDMP backup and restore.

This code implements the first set of changes needed to perform filelevel
based restore of NDMP backups.

The following things are implemented:

- Store the FHDB NDMP data into the backup catalog.
- Allow the user to select the info on restore
- Pass the file selection from the NDMP DMA to the NDMP data agent so
  it knows what to restore.

As we currently don't allow seeks on the NDMP stream with the NDMP tape agent
implemented in the Bareos Storage Daemon we cannot add the so called DAR
(Direct Access Recovery) but as part of this storing of the FHDB information
in the backup catalog we should store the DAR offset too so when we either
support native NDMP tape agents (currently not implemented) or when the Bareos
Storage Daemon allows seeking in the NDMP stream we have that information.

This code works when using the restore functions in bconsole. Restores via
the BVFS method currently don't work and need more work. This means that restores
via BAT don't work as that uses BVFS.

Fixes #188: Implement NDMP enhancements.