I was thinking more about the ease of understanding what exactly `with_self` is doing.  Right now, if someone is in `Network`, they see the `with_self` decorator, they wonder what it is, and they use their editor of choice to jump to the declaration for `with_self`, they will find themselves here.  To me, this file poses more questions than answers (what does `@decorator` do? what does `wrapped` do?).  The only real "content" here is the `with instance:` line, which seems kind of slim to be introducing a whole new file into the code chain.

I'm not sure that putting the function in `nengo.utils.network` gives it any more meaning than it would have in `nengo.utils.decorators`.  I guess the "meaning" is that when you see the function there, you know it is a thing that goes with `Network` somehow.  But another useful meaning is "this has to do with decorators", which would be conveyed by putting it in `nengo.utils.decorators`.  It's not particularly informative either way, but it feels to me like the person who wants to see the code for `with_self` is going to be more interested in `nengo.utils.decorator` than `nengo.utils.network`.