* my comments on this:

- the change is clearly going in the right direction and it will be a nice simplification
- `MemoryMap.Name` should have a `__repr__` indicating that it's a subclass (this is for clarity purpose in reading the debug output)
- empty tuple is OK (transparent windows are very useful, e.g. if you are converting bus width), but resource names must not be empty, and shall be checked in `add_resource`
- ordering between integers and strings should be left to a linting pass or perhaps just be deferred to the BSP builder or its components
- `MemoryMap.Name` is fine