astakos: Add email notifications recipients

Astakos accepts three lists of people who receive application
notifications, namely 'ADMINS', 'HELPDESK' and 'MANAGERS'. Then it sends
email notifications in a preconfigured way in these lists (ie. project
creation notifications are always sent to the 'HELPDESK' and 'MANAGERS'
email lists).

We would like to enable Astakos to specify explicitly the lists in which
every notification will be sent. This commit adds the corresponding
settings that will enable this feature.

For convenience, Astakos groups the notifications in three categories
and let the user define the recipients for these.
  - ACCOUNT_NOTIFICATIONS_RECIPIENTS receive notifications for 'account
    pending moderation' and 'account activated' actions.
  - FEEDBACK_NOTIFICATIONS_RECIPIENTS receive feedback notifications
  - PROJECT_NOTIFICATIONS_RECIPIENTS receive notifications for 'project
    creations' and 'project modification' actions.

Furthermore, one can explicitly specify the recipients for a specific
notification by using one of the following settings:
  - ACCOUNT_PENDING_MODERATION_RECIPIENTS
  - ACCOUNT_ACTIVATED_RECIPIENTS
  - PROJECT_CREATION_RECIPIENTS
  - PROJECT_MODIFICATION_RECIPIENTS
By default, these settings are not exposed to the config file.
astakos: Sent notifications to the specified lists

Use *_RECIPIENTS settings and sent email notifications to the
appropriate lists.
astakos: Document usage of '*_RECIPIENTS' settings

Document the usage of '*_RECIPIENTS' settings in Astakos to control the
lists were Astakos sends notifications. These lists used to be
preconfigured.
gtools: Fix a race in the cpustats collectd plugin

If the VM has just been started, the cpustats collectd plugin might try
to read /proc/<pid>/fd/ for VCPUs fds, before qemu has initialized /
created the VCPUs. This led to a ZeroDivision error in the collectd
plugin. Make sure to skip that particular VM until the VCPUs have been
created.
cyclades: Catch corner case in reconciliation

Include 'ERROR' in the states for which we check if the NIC exists in
the Ganeti instance.
ci: Update flavor option for burnin

Do not use only file disk templates, since an archipelago disk template
is required for snapshot tests.
cyclades: Add snapshot property in lowercase

Snapshot properties are stored in lowercase in Pithos DB. It is the
image/plaknton API that converts them to uppercase.
cyclades: Get Pithos objects by their UUID

Use the newly introduced 'get_object_by_uuid' method to get a Pithos
object by its UUID, instead of mapping a UUID to a (account, container,
name) tuple.

Also, remove the '--user' and '--public' options from 'image-show' and
'snapshot-show' management commands. Instead, use the
'check_permissions' option to bypass Pithos permission check.

Finally, fix plankton tests to mock the 'get_object_by_uuid' method.
docs: Update debian install guide
docs: Update upgrade release-0.16 guide
pithos: Add umask option on gunicorn conf file
Use proper delimiter for excluded packages

The proper delimiter for SYNNEFO_EXCLUDE_PACKAGES should be ":", not
" ". Also, exclude the snf-admin-app when testing Pithos.
cyclades: Re-raise exception when snapshots fail

When we cannot send a Ganeti job for a snapshot, we must re-raise the
exception after setting the snapshot's status to error.
pithos: Refactor Gunicorn conf file

Remove shared memory file, /dev/shm/wid, and use a
shared memory mapping instead for the Gunicorn worker
ID bookkeeping.
pithos: Make pithos.conf.py Synnefo wide accessible

Rename pithos.conf.py to gunicorn-archipelago.py and move it
to snf-webproject under the directory gunicorn-hooks to
make it wide accessible.
snf-deploy: Update Gunicorn conf file

Update Gunicorn conf file and relevant files.
pithos: Remove obsolete Gunicorn worker
docs: Update upgrade doc for 0.16
docs: Update Debian installation guide
docs: Update CentOS installation guide