Refactor specifiers and make functions work

I did a bit of refactoring of the specifiers system, identifying common attributes and creating an appropriate structure. Maybe you could have a quick look at that? I think the general structure is fine, but I'm open for suggestions for better names...

I also introduced Function specifiers for functions that exist in numpy and math.h and dealt with the spurious warnings issue. I don't think the functions support is finalized yet, it has to be generalized a bit to allow for more languages than just Python and C++.

I think it's in a decent enough state, though, and it was also one of the last major features missing in pure NeuronGroup models. I'll possibly meet with Victor tomorrow to to start tackling Synapses.