pithos: Fix wrong quotas when moving objects

Quotas were not accounted correctly when moving an object or a folder to a
path that another object already exists.

This commit fixes this issue.

In addition to this, the backend during move operations used to issue the quota
change for each separate operation (copy & delete) and for each affected object
(in the case of bulk move operations).

This commit introduces the following enhancement:

In case of a move operation to the same account and to the same project
computes the whole quota change and contacts the quota holder component only
once (at the end of the whole procedure) for the specific account/project.

However, we do not perform the same for such copy operations because we want to
catch quickly failures due to quota restrictions.

Fixes #2
pithos: Reorganize backend testing code.

Break backend testing code into several modules and extent the tests to
challenge also the sqlite backend module.
pithos: Provide tests for the quota commissions
astakos: Split im/functions.py

Split `im/functions.py` in two parts. Rename the first part as
`user_utils.py` and keep in it all user-related utilities that
`im/functions.py` provided (mainly mail utilities). The second part is
the project-related functions, which will be kept in `im/functions.py`
for now.

Also, fix any broken imports that this split introduces.
astakos: Allow sending customizable emails

Add a `send_plain` function in `im/user_utils.py`. With the `send_plain`
function, the admin can send a fully customizable mail to an
AstakosUser. The admin can either choose to use the provided body
template (`plain_email.txt`) and subject, or write his/her own.
astakos: Add project logic

Add a `validate_project_action` function that takes a project and
an action as arguments and checks if the action can be applied on the
project.
astakos: Add user logic

Add a `user_logic` file that serves as a common endpoint for actions on
users. The actions that this file offers act as a wrapper above
`activation_backends` and are currently used by `snf-manage`.

Also, add a `validate_user_action` function in `activation_backends`, in
order to export this user logic to any other module that wants to use
it.
astakos: Add tests for user_logic

Add tests under `im` that verify that the functions in `user_logic.py`
are working as intended.