Merge: Namespace for
Better implementation for `full_name` and `c_name` that make them shorter and use the project as the namespace of public entities.
Examples of fullnames of entities used in messages
* A public class `A` defined in the module `m` of the project `p` was `p::m::A`, now it is `p::A`.
* A public method `x` defined in a class `A` in the module `m` of the project `p` was `p::m::A::x`, now it is `p::A::x`
Exeaple of fullnames for entities that are used internally:
* The refinement of `A` in a module `p::n` was `p::n#p::m::A`, now it is `p::n#A`
* The redefinition of `x` in a class `B` in `p::n` was `p::n#p::m::B#p::m::A::x`, now it is `p::n#B#A::x`
The `c_name` get some comparable simplifications, so C identifiers will be simpler and will less overflow in unwind or in valgrind.
Note: please ignore the first commits that come from #1069
Pull-Request: #1092
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>