Unmagify network

As per recent discussions, this PR removes the magic from `Network`.

This is still a WIP as I'm not done converting all of the networks, but I wanted to make this PR now to get comments on how the revised networks look. In my opinion, they look simpler, and should be much easier to extend.

A common thing we were doing before was adding in new arguments whenever something needed tweaking, but that's not a good long term solution. Now, we should be using config objects to set the same properties for groups of objects. The revised `nengo.networks.actionselection.BasalGanglia` is a good example of this. However, there is a bit of an issue in that it introduces some global state (if you change some default for `actionselection.gaba_config`, it will affect all basal ganglias from that point forth [though not any from before the change]).
I would allow `label` and `seed` to be passed in, to forward to the new Network (since we had this functionality before). The problem is if the user passes in their own `net`, these wouldn't be used. I'm not sure if the best thing then is to override their values, only override default values and error otherwise, or always error if `net` is passed along with `label` and `seed`.