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)
- get_project_hierarchy() method
- is_leaf_project() method
- Changes at create_project(), update_project() and
delete_project()
- 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>

Implements: blueprint hierarchical-multitenancy
Restrict project-tree depth

Controlled by keystone.conf on the 'max_project_tree_depth' item.
Configuration on keystone.conf and default in common/config.py - DONE
Check depth on creating new project (SQL and KVS) - DONE
Unit tests for creating new project (SQL and KVS) - DONE
Check depth on changing parent of leaf project - DONE
Unit tests for changing parent of leaf project - DONE
Restrict project-tree depth

Controlled by keystone.conf on the 'max_project_tree_depth' item.
Configuration on keystone.conf (default on keystone/common/config.py - DONE
Check depth on creating new project (SQL and KVS) - DONE
Unit tests for creating new project (SQL and KVS) - DONE
Check depth on changing parent of leaf project - DONE
Unit tests for changing parent of leaf project - DONE