astakosclient: Fallback to Python's json package

If simplejson is not installed, fallback to python's default 'json'
package. This is needed because 'simplejson' is not available in some
distributions (i.e. CentOs 7).
pithos: Change quota error handling

Pithos backend used to catch errors generated by the AstakosClient
and in those cases would return 413 (Request Entity too Large).
However, quota limit failures are not the only failures can occur.
Therefore, 413 responses are not always appropriate.
To fix this problem, let the respective methods fail with an
AstakosClientException which is handled by the common api decorator.
Small typo fix

closes grnet/synnefo#198
docs: Update CentOS 6.5 installation guide for 0.16

closes synnefo/grnet#192
cyclades: Fix mishandling of MAX_CIDR_BLOCK setting

Fix mishandling of MAX_CIDR_BLOCK setting. The CIDR range should be
[MAX_CIDR_BLOCK, 29] instead of (MAX_CIDR_BLOCK, 29] that was until now.
pithos: Several PEP8 and test fixes
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
and a maximum allowed number of group members.

More specifically:
* Introduces two new settings for Pithos:
* the maximum number of metadata each resource
  (account/container/object) can have,
  the maximum number of groups each account can have
  and the maximum number of members each group 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.
plankton: Handle limit exceptions.

Pithos backend enforces limits on the number of the resource metadata.
If these limits are exceeded a LimitExceeded exception is raised.
Plankton should catch these exceptions and fail with BADREQUEST (400).
docs: Update storage API
pithos: Fix group issues

* Fix encoding issues
* Provide the appropriate tests
astakos: Revert bulk update of holdings in commissions

db464c6 introduced a bug: deleting holdings (and then bulk creating them)
interferes with locking; a thread that waits for holdings will not get
the deleted ones.

Revert to separate updating of holdings when issuing and resolving
commissions.
cyclades: Add GANETI_DISKS_WAIT_FOR_SYNC option

Add new setting to denote whether Ganeti will wait for the disk mirror to
sync (DRBD). This setting is used when creating a new instance or adding
a new disk to an existing Ganeti instance.
ui: Fix position of suspended vm notice
docs: Update 0.16 upgrade notes

Describe new Pithos mapfile after the consolidation with Archipelago.
pithos: Add class attribute to ModularBackend

Add _class_version class attribute to ModularBackend class
to differentiate between multiple backend versions.
cloudbar: Do not show image link border in IE
docs: Add design doc for multi-db transactions

This doc presents the problem of multi-db transactions in Django and
proposes a solution that converges with database routers.

Also, add a mention in the dev-guide about this change.
snf_django: Add database router for Synnefo apps

Add Django database router to support using Synnefo with multiple
databases. In a gist, if the administrator has added in the DATABASES
setting a database with the "cyclades" or "astakos" alias, and
SynnefoRouter is defined in DATABASE_ROUTERS, then that database will be
used to read/write the respective Cyclades or Astakos models.
snf_django: Add support for multi-db transactions

Add two functions:

* select_db: Return an appropriate database to read/write depending on
  the app ("db"/"im") that makes the request.
* _transaction_func: Common entry point for all Cyclades/Astakos
  transaction functions. This function calls the select_db function to
  choose a database for the transaction and then passes the control to
  the Django transaction functions.
cyclades: Mimic Django transaction module

Provide a transaction module similar to Django's. The implemented
functions are commit(), rollback(), commit_on_success(),
commit_manually(), which should work exactly the same as the Django
counterparts. The added benefit is that the transaction will open always
in the correct database, even in a multi-db scenario.