Include top-level declarations in logical data model
Revert more interface-role uniqueness check

Theoretically, it makes sense that interfaces for disjoint sets of roles can have the same name (e.g. INTERFACE X FOR RoleA and INTERFACE X FOR RoleB). However, the implementation currently cannot handle this, so we revert to the more strict uniqueness check.
TEMP: Working single project for ampersand and prototype