Support commissions on multiple projects

An action on a resource can now trigger quota changes on multiple projects.
For example, when a VM is destroyed, its attached volumes (which may refer
to different projects) are destroyed too.

Astakosclient commission helper functions are changed to take provisions
on project/resource pairs.
cyclades: Support project reassignment for volumes

Volumes can be reassigned through the volume API except for the system
volumes. These are reassigned as part of the VM they are attached to.
cyclades: Properly enforce volume quota

When enforcing the cyclades.disk resource, omit by default system disks.
This can be overridden with "--remove-system-volumes", in which case the
corresponding VM must be removed too.

Removing a VM fails if it triggers the removal of additional (non system)
disks. This can be overridden with "--cascade-remove".
cyclades: Reduce duplicate quota code

get_db_holdings computes either user holdings or project holdings; this is
controlled with the flag 'for_users'.
astakos: Query service quota with lists

Extend service_get_quota and service_get_project_quota in a backwards
compatible manner in order to support querying for multiple users or
projects.
cyclades: Fix reconcile for given project

Use the new option 'project' of service_get_quotas in order to retrieve
only the quota needed.
cyclades: Set DB index for project fields

The index speeds up resource reconciliation, which filters by project.
cyclades: Auto-fill project in test objects

Use factory.LazyAttribute to set project equal to userid in test objects
created with a factory.