pithos: Recover from DB integrity errors

In Pithos+ atomicity is forced on the container level.
Hence, write operations in the account level can produce
integrity errors.

This commit handles these cases.

In PostgreSQL, a transaction is aborted
(and all the subsequent commands are ignored)
if an integrity error occurs.

Therefore, before performing an command
that can produce an integrity error,
a new savepoint is defined inside the transaction,
and after the command execution is rollbacked or committed
according to execution status.
docs: Update copyright date on docs
ui: Fix volume details editing controls position
ui: Update resource titles truncation length
astakos: Update checkbox label in terms acceptance form

the field description changed for field description clarity when
displayed in user management commands context resulting confusion when
appeared in terms acceptance form. Fixed by reverting field label in the
terms acceptance form class.
docs: Remove obsolete warnings

closes grnet/synnefo#163
astakos: Use bulk_create to speed up commissions

Update holdings and create provisions and log in bulk when issuing or
resolving commissions to speed up the operation,
astakos: update action logic

The following changes are made to the way actions are validated:

* accept: Accept only unmoderated or rejected users.
* deactivate: Deactivate only moderated users. This includes inactive
  users, solely for the purpose of changing their deactivation reason.
* send_verification_mail: Renew verification code and send it only to
  users with unverified mail.
astakos: Update user logic tests

Update tests according to the changes in activation_backends.py

closes grnet/synnefo#164
pithos: Add missing index

Add index on column 'node' of the ''versions' table.

closes grnet/synnefo#161
pithos: Perform size checks during uploads

Verify the consistency between the declared size
and the object's hashmap during uploads/object updates.
pithos: Fix test

The specific test challenges the object upload
by providing the object's hashmap instead of actual data
while not all the respective blocks are previously
uploaded to the storage (409 Conflict status).
However, this test will fail if all the blocks
are stored to the backend
by preceding uploads / test executions.

This commit changes the test in order to upload random data
and, hence, it reduces the possibility of block collisions.
pithos: Restore XML input in uploads using hashmaps

In version 0.15 the option to create an object by providing the object's
hashmap in XML format, instead of the actual data, was disabled. Restore
this operation by substituting the 'minidom' module (vulnerable to some
security implications) with the 'lxml' module for performing the XML
parsing. Also fix the respective test case.

Close grnet/synnefo#155
Revert "pithos: Restore XML input in uploads using hashmaps"

This reverts commit 11b5b8503f7d85d6abffdfbb5111e21142b45ccb.
ci: Name directory when git-cloning

Explicitly name the directory where we clone a repo; don't rely on the
repo's name.
astakos: Add option to customize sender of emails

Allow changing the sender of an email in the `send_plain` function of
astakos.
astakos: Add test suite for user utilities

Use this test suite to check if `send_plain` function works as intended.
cyclades: Add validate function for IP actions

Use this function to verify that an IP can be deleted. The rationale
behind getting the delete check out of the `delete_floating_ip` action
is to make it easy for other apps to import it.
cyclades: Add tests for IP actions

Add a test for creating a floating IP and a test to check if the
`validate_ip_action` works as intended.
astakos: Prevent suspending a suspended project

If a project is already suspended, then do not allow the "SUSPEND"
action on it. Also, return an appropriate message.