What would you think about moving this stuff back into the Network class (call it `Network._setup_container` or something), and then here we just call `inst._setup_container(*args, **kwargs)`.

The reason I like that, is that it keeps all the Network related stuff inside the Network class.  Then we can hide the metaclass stuff inside `nengo.utils.objects` or something as you suggested, and users can still get a pretty good idea what's going on in `Network` without looking at that at all.  As a side bonus, it also allows different containers (if there ever are any) to define their own setups.