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]).
Yeah; the intention here is that having the user pass in `label` and `seed` and just forwarding that to the network constructor doesn't seem like a frequent enough use case to bother keeping them as separate arguments. Passing in a network is already kind of essential to make the function play nicely with the config system, and it nicely gets around the need to have `label` and `seed` arguments for all of these functions.