[#3857] Simplify the Project.descendants method
[#3857] Simplify the Project.descendants method

The queries made by Project.descendants can get quite complicated, and this
commit tries to simplify the queries by dividing it into multiple smaller
queries, instead of deeply nested queries.

This change reduces the response time of the
`/rest/v1/project_hierarchy/<id>` end-point for a large hierarchy like EUTF
by about 50%.

akvo/akvo-rsr,akvo/akvo-rsr,akvo/akvo-rsr,akvo/akvo-rsr