Rename _neuron_idx to _element_idx and _num_neurons to _num_elements -- elements (previously called neurons) correspond to neurons for NeuronGroup but to synapses for Synapses and to compartments for the upcoming SpatialNeuron class.
Source/target for synapses needs only to be a SpikeGroup if a pre resp. post pathway is used.
Start simplifying the specifier system by merging classes and not requiring a duplicate definition of dtypes
Remove the SynapticArrayVariable specifier
Prepare synapse creation for subgroups
Start a big overhaul of the indexing system
Merge remote-tracking branch 'origin/master' into specifiers_rewrite

Conflicts:
	brian2/monitors/statemonitor.py
	brian2/synapses/synapses.py
Adapt monitors for the new specifiers system
Do not store names in the Specifier objects (reduces redundancy)
Do not store indices in the Specifier object, instead store a separate mapping from specifiers to indices (will be further simplified)
Remove a left-over print statement
Rename the index attribute to item_mapping to not overuse the word "index".
Use the word "variable" instead of "specifier" everywhere
Merge remote-tracking branch 'origin/master' into specifiers_rewrite

Conflicts:
	brian2/equations/unitcheck.py
	brian2/monitors/statemonitor.py
	brian2/stateupdaters/exact.py
	docs_sphinx/developer/codegen.rst
Fix incorrect imports
Replace USE_SPECIFIERS by USES_VARIABLES
Allow record=number as a shorthand for record=[number] in StateMonitor
Put "iterate_all" information into the templates
Fix a remaining reference to "specifier"
Add a first implementation of subgroups -- no support in StateMonitor, Synapses, etc. yet, only getting/setting of state variables