Clarify the difference between context and resource objects
Don't return iterators as children objects

Since we need to access children elements several times, we better keep
them in memory and avoid the need to rewind iterators.
Refactored `get_name` to identify objects by code rather than by name
Implemented `get_cache_key`

Also enforced children objects to implement it.
Renamed function for clarified semantics
New overview page for projects
Simplified item generation