`with_self` is network specific, I'm pretty sure. It can only be applied to an instance methods (i.e., you can't apply it to a normal function), and the only class that we provide for which `with self` makes sense is a `Network` or a subclass of it.

The thing I don't like about putting all decorators in `nengo.utils.decorators` is that there's no meaning associated with the contents. I feel like this is analogous to putting all of the functions in `nengo.utils.functions` because, you know, they're technically functions. Like I said above, I consider there to be almost no cost with adding new files in the `utils` subdirectory (but if there's some reason why that's not true, I could be persuaded otherwise).