Rename non-public methods of `SpikeQueue` do make the public interface clear, also rename `SpikeQueue.compress` to `SpikeQueue.prepare`
Some more refactoring of the `SpikeQueue`:  move the handling of changes in dt into the `SpikeQueue`. The remaining public interface consists of the methods `prepare`, `push`, `peek`, `next`. Delays are converted and stored in the `SpikeQueue` (this means that delays are not allowed to change during a run -- although I don't think it would have worked previously either)
First attempt at a C++ SpikeQueue with a Cython interface
Refactor the SpikeQueue a bit more to match the  interface of the C++ version
Fix subgroup handling in the C++ SpikeQueue
Use the new C++ SpikeQueue when using weave for the `Synapses` object