Move special flags for mig_jcr.

We need to set the duplicate checking and maxtime check flags on
a mig_jcr to disables as soon as we instantiated the mig_jcr as
setup_job() already evaluates if the Job is a duplicate.

Fixes #318: copy jobs & cancel duplicates
Fix 64Bit install dir problems

On 64Bits, there were problems when a different install location was
chosen.

Now we only set PROGRAMFILES to PROGRAMFILES64, if the INSTDIR was not
altered.

On uninstall, we do not set the INSTDIR anymore as it is set correctly by
the uninstaller.

Fixes 324: Windows installer (64 bits) overwrites user install dir
settings.
Fix 64Bit install dir problems

On 64Bits, there were problems when a different install location was
chosen.

Now we only set PROGRAMFILES to PROGRAMFILES64, if the INSTDIR was not
altered.

On uninstall, we do not set the INSTDIR anymore as it is set correctly by
the uninstaller.

Fixes #324: Windows installer (64 bits) overwrites user install dir
settings.
Merge branch 'master' of git://github.com/bareos/bareos
Sync LMDB code.
Some tweaks to copy/migrate config.

The folllowing changes were made:

- The copy and migration jobs up until now always needed that you specify a
  storage in the Job while most of the time it was never used as the real
  storage used also depends on what the original Job used for storage.

  This patch tries to relax the need for specifying a read storage and
  tries to always use the info of the original pool used by the previous
  Job being copied or migrated or the original storage settings of the Job
  itself.

  When you start a copy or migration you now don't see the somewhat random
  read storage that can change along the way but only the write storage.
  In essence it should also not matter what read storage is used as long
  its the right read storage.

- We can now have migration and copy jobs without a dummy client setting
  but this means that the %c variable of the Job will not be filled and as
  such you won't see the client name in the completion mail subject. So we
  now copy the client pointer from the actual previous Job that is
  migrated or copied so that we do have the proper client name and also
  the client name of the actual client the migration or copy was done for
  an no longer the dummy name it was before.

- Analog to using the client from the previous Job we also use the fileset
  and job level of the previous Job so that the copy migrate now always looks
  similar to the original Job its copying e.g. no longer a backup level
  incremental when copying/migrating a full level Job.

- Try to be smart about when to use data spooling.
  Only use the Job data spooling setting when not enabled yet. e.g. when the
  JCR already has data spooling enabled we don't want to disable it because
  the Job has no explicit setting.

- Restored printing of the client/fileset/level in the copy/migrate overview
  something we removed in a previous patch when we removed the explicit need
  for specifying these settings. Now that we set the correct information in
  the copy/migrate setup we can again print this data and now also show the
  correct info if you configure your copy/migrate jobs using the new config
  syntax e.g. without setting a dummy client and fileset.
Create an empty rados object in d_open when O_CREAT is set.
renamed package: macbareos to bareos-filedaemon

Renamed the Bareos MacOS package from macbareos to bareos-filedaemon
to be aligned with most of the other platforms.
Make storage status somewhat more informative.
Don't check client concurrency for Migrate/Copy Jobs.

Now that we set the actual client for which a migrate/copy is done we
should no longer check the client concurrency as that makes no sense for
a migrate/copy job as the client is not consultated at all so we can run
with as many concurrency as allowed by the storage concurrency.
Allow to read from file type devices multiple times.

Up until now the volume reservation logic only allows you to have one
Job access the same read volume. For file type devices multiple readers
should be no problem and most filesystems are even optimized for this
nowadays by allowing multi parallel sequential read streams which are
handled very efficiently.
Reschedule on error caused EndTime to be incorrect
Flush console queued job messages
Cleanup lockmgr.h

Some platforms don't like spaces in #define and other preprocessor
commands so lets cleanup this mess.
Drop last instances of generate_daemon_event()

This is an reminiscent of the old python code. As we replaced it with a
proper plugin interface now everywhere we can drop this old dummy
functions and definitions.
Fix TODO from November 2008.
Add first attempt for support libcephfs stored backend.
First prototype dynamic loading SD backends.

We now store all shared objects used in all SD programs
(stored, btape, bls ...) in a shared library named
libbareossd-<version>.so so the final binaries get much
smaller and share the same code. Next to that we started
the first work on making tape specific code abstracted in
the tape_device class and no longer in the generic device
code. Now we implement the different methods of the different
device classes using virtual methods some are pure virtual
which means that the derived class needs to implement this
method itself and some have a default implementation which the
class can override.

This also contains the first try at making it possible to
dynamically load the different SD backends. The file backend
will always be part of the libbareossd.so but the tape and
the different cloud storage backends are dynamically loadable
using the same technique as what is used for loading the
different catalog backends. This means that we can distribute
the different storage programs without the need to have all
kind of dependencies on the different cloud backend we support
now.

As part of this big refactoring we removed the vtape code which
doesn't serve a real purpose anymore in Bareos as there are much
better alternatives (MHVTL and QuadstorVTL) nowadays and we should
carry on unmaintained code. The alternatives also see steady
development while vtape hasn't been updates in ages. Also these
alternative VTL emulators implement a true autochanger, encryption
and much more like personality support for all major brands in
real tape hardware which also means we test our tape code much
more thoroughly.
Initial commit for TapeAlert support.
Initial code commit for keeping statistics in the SD and transfer to DIR.