Copy job definition requires unnecessary settings

When configuring a Migration or Copy Job you need to specify a Client
and Fileset although those items are never used in the Job as it selects
via a certain selection criterium the Jobs it needs to Migrate or Copy
and uses the Client and Fileset of that original Job.

We relaxed the configuration engine to no longer make the Client and
Fileset keyword required keywords. In the check_resources() function
we now check after the required keyword check what type of Job is
configured and when its not a Migration or Copy Job we still fail the
configuration check as for any Job not being a Migration or Copy Job we
still need the Client and Fileset.

We also needed to check in a lot of places if we have a Client or
Fileset for the current running Job as a lot of code assumes that there
always is a Client or Fileset. This is of course a bad assumption and
hopefully we found all places where these wrong assumptions are made
and the Jobs Client or Fileset pointer is dereferenced without a check.

This new code passed a full regression test both with the old configs
for Migrate and Copy with a dummy Client and Fileset and without.

Fixes #220: Copy job definition requires unnecessary settings
Added usage to the plugin information block

Now the plugin information block also offers a
usage entry. That way, we can include a basic
info about the usage of the plugin in the plugin
itself.

Also, the status filed now shows extended information
about each plugin.

Signed-off-by: Marco van Wieringen <marco.van.wieringen@bareos.com>