It was stranger before, because both of these things were being done, while bouncing through 3 call sites (e6059096f823b5adef24c0ebc53f6a10830f9edd cut this down to 2). This cut it down to 1. The reason I didn't go your suggested route was because I don't like explicitly type checking to alter control logic, when it's easy to implement it otherwise. IMO, the builder and `Connection` already suffers a bit from the former, and I'd like to propose refactoring to address this next.

I'm not considering the lists inside `BaseNetwork` to be internal. They are publicly accessible attributes that the user is free to introspect (one of the main advantages of this PR, IMO). So it's not strange that each `NengoObject` can change it. The idea is that is what the user would be doing if there was no mechanism for automatic addition to networks.