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: Raise custom exception for invalid policies.

Raise 'InvalidPolicy' instead of 'ValuerError' exception
during account/container updates.
pithos: Apply metadata/group limits for the resources

This commit sets a maximum metadata number per Pithos resource
as well as a maximum group number per account.

More specifically:
* Introduces two new settings for Pithos: the maximum number of metadata
each resource (account/container/object) can have and the maximum
number of groups each account can have.
* Adds checks to enforce the above limits.
* Introduces the LimitExceeded exception raised by the backend when these
limits are infringed.
* Refactors the backend implementation of the group/metadata update in
order to reduce interaction with the database.

The affected backend methods are:
* update_account_meta
* update_container_meta
* update_object_meta
* register_object_map
* copy_object
* move_object
* update_object_hashmap
* update_account_groups

Applications, other than Pithos+, that use the Pithos backend
should put a special care on handling these situations.