Hierarchical Projects

This patch adds the basic features to implement the
hierarchical projects concept. Some of the changes are:
- Add parent_project_id attribute to Project manager (and
  database column)
- list_project_parents() method
- list_project_children() method
- is_leaf_project() method
- Changes at create_project(), update_project() and
  delete_project()
- Restrict project tree depth on keystone.conf
- Unit tests

Co-Authored-By: Raildo Mascena <raildo@lsd.ufcg.edu.br>
Co-Authored-By: Telles Mota Vidal Nobrega <tellesmvn@lsd.ufcg.edu.br>
Co-Authored-By: Andre Aranha <afaranha@lsd.ufcg.edu.br>
Co-Authored-By: Samuel de Medeiros Queiroz <samuel@lsd.ufcg.edu.br>
Co-Authored-By: Thiago Paiva Brito <thiagop@lsd.ufcg.edu.br>

Implements: blueprint hierarchical-multitenancy
Change-Id: I8d579d3fb413cdacc3d7bcbd3ac3ed335b2ca05e
Merge commit 'refs/changes/41/108841/6' of https://review.openstack.org/openstack/keystone into list_inherited_roles_backup

Conflicts:
	keystone/assignment/backends/kvs.py
	keystone/assignment/backends/sql.py
	keystone/assignment/core.py
	keystone/tests/test_backend.py
	keystone/tests/test_backend_ldap.py
	keystone/token/providers/common.py

Furthermore, we developed the get_grant() and list_grants() for the
backend SQL with inherited roles support.
Refactoring methods to get and list grants

On the Assignment controller, manager and SQL backend.