Synapse numbers accessible in abstract code

This adds `N_incoming` and `N_outgoing` to the `Synapses` object. The numbers are also checked in the test suite. For numpy, I was lazy and simply used `bincount` instead of special-casing the simple cases (`n==1`, `n` a scalar) -- I ran the synapse creation benchmarks and there is a small offset (it's a log plot, though...) but it doesn't look too bad to me. We can always come back to it later and optimize it.