Initial stab at utilities for spike recording.  Not integrated in, but compiles.
Use the DMA controller to buffer writes to SDRAM.
Calls to recording from within the Ensemble initialisation and update loop.
Merge branch 'master' into spike-recs
Merge branch 'refactored-vertices3' into spike-recs
Clear the buffer after each frame.
Allow manual specification of region ID. Added test for region ordering.
Use SDRAM size for DTCM unless the vertex has a dtcm_usage attribute.
Merge branch 'refactored-vertices3' into spike-recs
Allow unwritten regions to go through as unfilled.
EnsembleVertex creates a RECORD region and leaves it unfilled.
Add method to retrieve region data from SpiNNaker.
[Bugfix] Copy to `_sdram_current` not `&_sdram_current`
Allow edge functions to specify either only a pre- or a post- type object.
Remove buffer->record override.
EnsembleVertices can start recording.
(Spike) probing completed.

- Probes are created by the Builder as required and given to the simulator.
- At the end of simulation the Simulator asks the Probes for their data and
  stores the result.
- Probes manage retrieving data from SpiNNaker and formatting it as required.
Require bitarray in setup.py
On multicast packet receive get the dimension of the packet using a mask
specified by the edge.
Give Edges greater control over the keys used to represent them.